twing
Version:
First-class Twig engine for Node.js
38 lines (37 loc) • 1.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getFilter = void 0;
/**
* Get a filter by name.
*
* @param {string} name The filter name
*
* @return {TwingFilter|false} A TwingFilter instance or false if the filter does not exist
*/
const getFilter = (filters, name) => {
const result = filters.get(name);
if (result) {
return result;
}
for (let [pattern, filter] of filters) {
let count = 0;
pattern = pattern.replace(/\*/g, function () {
count++;
return '(.*?)';
});
if (count) {
const regExp = new RegExp('^' + pattern + '$', 'g');
const match = regExp.exec(name);
const matches = [];
if (match) {
for (let i = 1; i <= count; i++) {
matches.push(match[i]);
}
filter.nativeArguments = matches;
return filter;
}
}
}
return null;
};
exports.getFilter = getFilter;