UNPKG

syphonx-core

Version:

SyphonX is a template-driven solution for extracting data from HTML in a highly efficient way. It combines the power of jQuery, Regular Expressions, and Javascript into a declarative template-driven format that extracts and reshapes HTML data into JSON.

88 lines 3.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.flattenTemplateTransforms = exports.flattenTemplateSelect = exports.flattenTemplateActions = exports.findSelect = exports.findLastSelectGroup = exports.findAction = void 0; function findAction(actions, action_type) { return flattenTemplateActions(actions) .map(function (obj) { return obj.action; }) .filter(function (action) { return action.hasOwnProperty(action_type); }); } exports.findAction = findAction; function findLastSelectGroup(actions) { var selectActions = findAction(actions, "select").map(function (action) { return action.select; }); return selectActions.at(-1); } exports.findLastSelectGroup = findLastSelectGroup; function findSelect(actions, name) { var group = findAction(actions, "select").map(function (action) { return action.select; }); var result = []; for (var _i = 0, group_1 = group; _i < group_1.length; _i++) { var action = group_1[_i]; for (var _a = 0, action_1 = action; _a < action_1.length; _a++) { var select = action_1[_a]; if (select.name === name) result.push(select); } } return result; } exports.findSelect = findSelect; function flattenTemplateActions(actions, result, level, n) { if (result === void 0) { result = []; } if (level === void 0) { level = 0; } for (var _i = 0, actions_1 = actions; _i < actions_1.length; _i++) { var action = actions_1[_i]; result.push(!n ? { action: action, level: level } : { action: action, level: level, case: n }); if (action.hasOwnProperty("each")) flattenTemplateActions(action.each.actions, result, level + 1); else if (action.hasOwnProperty("repeat")) flattenTemplateActions(action.repeat.actions, result, level + 1); else if (action.hasOwnProperty("switch")) for (var _a = 0, _b = action.switch; _a < _b.length; _a++) { var obj = _b[_a]; flattenTemplateActions(obj.actions, result, level + 1, action.switch.indexOf(obj) + 1); } } return result; } exports.flattenTemplateActions = flattenTemplateActions; function flattenTemplateSelect(actions, names) { var group = findAction(actions, "select").map(function (action) { return action.select; }); var result = []; for (var _i = 0, group_2 = group; _i < group_2.length; _i++) { var action = group_2[_i]; var _loop_1 = function (select) { if (!names || (select.name && names.includes(select.name))) { var existing_select = result.find(function (obj) { return obj.name === select.name; }); if (!existing_select) result.push(select); else if (existing_select.query || select.query) existing_select.query = mergeQueries(existing_select.query, select.query); } }; for (var _a = 0, action_2 = action; _a < action_2.length; _a++) { var select = action_2[_a]; _loop_1(select); } } return result; } exports.flattenTemplateSelect = flattenTemplateSelect; function flattenTemplateTransforms(actions) { return findAction(actions, "transform").map(function (action) { return action.transform; }).flat(); } exports.flattenTemplateTransforms = flattenTemplateTransforms; function mergeQueries(q1, q2) { if (q1 && q2) { var jsons_1 = q1.map(function (obj) { return JSON.stringify(obj); }); var a = q2.filter(function (obj) { return jsons_1.find(function (json) { return json === JSON.stringify(obj); }); }); q1.push.apply(q1, a); return q1; } else if (q1 && !q2) return q1; else if (!q1 && q2) return q2; else return undefined; } //# sourceMappingURL=utilities.js.map