UNPKG

epubavocado

Version:

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

24 lines (23 loc) 1.25 kB
import { toArray } from '../../util.js'; export const resolveIdref = (entity, idref) => { var _a; if (!idref) { return null; } return (_a = entity._context.manifest()) === null || _a === void 0 ? void 0 : _a.item({ id: idref }); }; export const attributeFilter = (attribute, values, operator = 'or') => values && values.length ? `[${toArray(values) .map((value) => `${attribute}='${value}'`) .join(` ${operator} `)}]` : ''; export const attributeContainsWordFilter = (attribute, words, operator = 'or') => words && words.length ? `[${toArray(words) .map((value) => `contains(concat(' ', normalize-space(${attribute}), ' '), ' ${value} ')`) .join(` ${operator} `)}]` : ''; export const idFilter = (id) => attributeFilter('@id', id); export const anyPropertiesFilter = (anyProperties) => attributeContainsWordFilter('@properties', anyProperties, 'or'); export const allPropertiesFilter = (allProperties) => attributeContainsWordFilter('@properties', allProperties, 'and'); export const anyRelFilter = (anyProperties) => attributeContainsWordFilter('@rel', anyProperties, 'or'); export const allRelFilter = (allProperties) => attributeContainsWordFilter('@rel', allProperties, 'and');