epubavocado
Version:
I am an EPUB object model aspiring to be standards compliant.
53 lines (52 loc) • 2.26 kB
JavaScript
;
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;