openrosa-xpath-evaluator
Version:
Wrapper for browsers' XPath evaluator with added support for OpenRosa extensions.
24 lines (20 loc) • 670 B
JavaScript
const sortByDocumentOrder = require('./sort-by-document-order');
module.exports = { toSnapshotResult };
function toSnapshotResult(arr, resultType, singleItem) {
if (
resultType === XPathResult.ORDERED_NODE_ITERATOR_TYPE ||
resultType === XPathResult.ORDERED_NODE_SNAPSHOT_TYPE
) {
sortByDocumentOrder(arr);
}
return ((nodes) => {
let idx = 0;
return {
resultType,
singleNodeValue: singleItem || nodes[0] || null,
snapshotLength: nodes.length,
snapshotItem: (i) => nodes[i] || null,
iterateNext: () => nodes[idx++] || null,
};
})(arr.v);
}