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
JavaScript
;
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