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.

72 lines 2.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.regexpTest = exports.regexpReplace = exports.regexpExtractAll = exports.regexpExtract = exports.createRegExp = void 0; function createRegExp(value) { if (typeof value === "string" && value.startsWith("/")) { var i = value.lastIndexOf("/"); var pattern = value.substring(1, i); var flags = value.length > i ? value.substring(i + 1) : "m"; return new RegExp(pattern, flags); } } exports.createRegExp = createRegExp; function regexpExtract(text, regexp) { if (typeof text !== "string") return null; if (typeof regexp === "string") { regexp = createRegExp(regexp); if (!regexp) return null; } var match = regexp.exec(text); if (!match || !match[1]) return null; return match[1]; } exports.regexpExtract = regexpExtract; function regexpExtractAll(text, regexp) { if (typeof text !== "string") return null; if (typeof regexp === "string") { if (regexp.endsWith("/")) regexp += "g"; regexp = createRegExp(regexp); if (!regexp) return null; } if (!regexp.global) regexp = new RegExp(regexp.source, regexp.flags + "g"); var matches = Array.from(text.matchAll(regexp) || []); var result = []; for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) { var match = matches_1[_i]; if (match[1]) result.push(match[1]); } return result.length > 0 ? result : null; } exports.regexpExtractAll = regexpExtractAll; function regexpReplace(text, regexp, replace) { if (typeof text === "string") return text.replace(regexp, replace); else return text; } exports.regexpReplace = regexpReplace; function regexpTest(text, pattern) { var negate = pattern.startsWith("!"); if (negate) pattern = pattern.slice(1); var regexp = createRegExp(pattern); if (!regexp) return null; var result = regexp === null || regexp === void 0 ? void 0 : regexp.test(text); if (result === undefined) return null; else if (negate) return !result; else return result; } exports.regexpTest = regexpTest; //# sourceMappingURL=regexp.js.map