UNPKG

xpath-ts2

Version:

DOM 3 and 4 XPath 1.0 implementation for browser and Node.js environment with support for typescript 5.

72 lines 2.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.XPathEvaluatorImpl = void 0; const node_x_path_ns_resolver_1 = require("./node-x-path-ns-resolver"); const types_1 = require("./utils/types"); const xpath_exception_1 = require("./xpath-exception"); const xpath_expression_impl_1 = require("./xpath-expression-impl"); const xpath_ns_resolver_wrapper_1 = require("./xpath-ns-resolver-wrapper"); class XPathEvaluatorImpl { functionResolver; variableResolver; namespaceResolver; parser; constructor({ fr, vr, p }) { this.functionResolver = fr; this.variableResolver = vr; this.parser = p; } createExpression(e, r) { try { return new xpath_expression_impl_1.XPathExpressionImpl(e, { fr: this.functionResolver, nr: r == null ? this.namespaceResolver : new xpath_ns_resolver_wrapper_1.XPathNSResolverWrapper(r), vr: this.variableResolver, p: this.parser }); } catch (err) { throw new xpath_exception_1.XPathException(xpath_exception_1.XPathException.INVALID_EXPRESSION_ERR, err); } } createNSResolver(n) { return new node_x_path_ns_resolver_1.NodeXPathNSResolver(n); } evaluate(expression, contextNode, resolver, type, result) { if (type < 0 || type > 9) { throw { code: 0, toString() { return 'Request type not supported'; } }; } if (resolver != null) { resolver = convertNSResolver(resolver); } const ex = this.createExpression(expression, resolver); return ex.evaluate(contextNode, type, result); } } exports.XPathEvaluatorImpl = XPathEvaluatorImpl; function convertNSResolver(resolver) { if (resolver == null) { return { lookupNamespaceURI(_prefix) { return null; } }; } else if (!(0, types_1.isNSResolver)(resolver)) { const pr = resolver; return { lookupNamespaceURI(prefix) { return pr(prefix); } }; } else { return resolver; } } //# sourceMappingURL=xpath-evaluator.js.map