UNPKG

epubavocado

Version:

I am an EPUB object model aspiring to be standards compliant.

53 lines (52 loc) 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.allRelFilter = exports.anyRelFilter = exports.allPropertiesFilter = exports.anyPropertiesFilter = exports.idFilter = exports.attributeContainsWordFilter = exports.attributeFilter = exports.resolveIdref = void 0; var util_js_1 = require("../../util.js"); var resolveIdref = function (entity, idref) { var _a; if (!idref) { return null; } return (_a = entity._context.manifest()) === null || _a === void 0 ? void 0 : _a.item({ id: idref }); }; exports.resolveIdref = resolveIdref; var attributeFilter = function (attribute, values, operator) { if (operator === void 0) { operator = 'or'; } return values && values.length ? "[" + util_js_1.toArray(values) .map(function (value) { return attribute + "='" + value + "'"; }) .join(" " + operator + " ") + "]" : ''; }; exports.attributeFilter = attributeFilter; var attributeContainsWordFilter = function (attribute, words, operator) { if (operator === void 0) { operator = 'or'; } return words && words.length ? "[" + util_js_1.toArray(words) .map(function (value) { return "contains(concat(' ', normalize-space(" + attribute + "), ' '), ' " + value + " ')"; }) .join(" " + operator + " ") + "]" : ''; }; exports.attributeContainsWordFilter = attributeContainsWordFilter; var idFilter = function (id) { return exports.attributeFilter('@id', id); }; exports.idFilter = idFilter; var anyPropertiesFilter = function (anyProperties) { return exports.attributeContainsWordFilter('@properties', anyProperties, 'or'); }; exports.anyPropertiesFilter = anyPropertiesFilter; var allPropertiesFilter = function (allProperties) { return exports.attributeContainsWordFilter('@properties', allProperties, 'and'); }; exports.allPropertiesFilter = allPropertiesFilter; var anyRelFilter = function (anyProperties) { return exports.attributeContainsWordFilter('@rel', anyProperties, 'or'); }; exports.anyRelFilter = anyRelFilter; var allRelFilter = function (allProperties) { return exports.attributeContainsWordFilter('@rel', allProperties, 'and'); }; exports.allRelFilter = allRelFilter;