xpath-ts2
Version:
DOM 3 and 4 XPath 1.0 implementation for browser and Node.js environment with support for typescript 5.
58 lines • 2.31 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.installXPathSupport = exports.evaluate = exports.selectWithResolver = exports.useNamespaces = exports.select = exports.select1 = void 0;
const xpath_evaluator_1 = require("./xpath-evaluator");
const xpath_result_impl_1 = require("./xpath-result-impl");
const defaultEvaluator = new xpath_evaluator_1.XPathEvaluatorImpl({});
function select1(e, doc) {
return select(e, doc, true);
}
exports.select1 = select1;
function select(e, doc, single = false) {
return selectWithResolver(e, doc, null, single);
}
exports.select = select;
function useNamespaces(mappings) {
const resolver = {
mappings: mappings || {},
lookupNamespaceURI(prefix) {
return this.mappings[prefix] !== undefined ? this.mappings[prefix] : null;
}
};
return (e, doc, single = false) => {
return selectWithResolver(e, doc, resolver, single);
};
}
exports.useNamespaces = useNamespaces;
function selectWithResolver(e, doc, resolver, single = false) {
const result = evaluate(e, doc, resolver, xpath_result_impl_1.XPathResultImpl.ANY_TYPE, null);
if (result.resultType === xpath_result_impl_1.XPathResultImpl.STRING_TYPE) {
return result.stringValue;
}
else if (result.resultType === xpath_result_impl_1.XPathResultImpl.NUMBER_TYPE) {
return result.numberValue;
}
else if (result.resultType === xpath_result_impl_1.XPathResultImpl.BOOLEAN_TYPE) {
return result.booleanValue;
}
else {
if (single) {
return result.nodes[0];
}
return result.nodes;
}
}
exports.selectWithResolver = selectWithResolver;
function evaluate(expression, contextNode, resolver, type = 0, result) {
return defaultEvaluator.evaluate(expression, contextNode, resolver ? resolver : null, type, result ? result : null);
}
exports.evaluate = evaluate;
function installXPathSupport(doc, { fr, vr, p }) {
const evaluator = new xpath_evaluator_1.XPathEvaluatorImpl({ fr, vr, p });
doc.createExpression = evaluator.createExpression;
doc.createNSResolver = evaluator.createNSResolver;
doc.evaluate = evaluator.evaluate;
return doc;
}
exports.installXPathSupport = installXPathSupport;
//# sourceMappingURL=api.js.map
;