Add eachUpTo function (#690)
This commit is contained in:
parent
2ed2b22d49
commit
e153971cd4
@ -69,7 +69,8 @@ class TemplateRenderer {
|
||||
['sanitizeCssClass', this._sanitizeCssClass.bind(this)],
|
||||
['regexReplace', this._regexReplace.bind(this)],
|
||||
['regexMatch', this._regexMatch.bind(this)],
|
||||
['mergeTags', this._mergeTags.bind(this)]
|
||||
['mergeTags', this._mergeTags.bind(this)],
|
||||
['eachUpTo', this._eachUpTo.bind(this)]
|
||||
];
|
||||
|
||||
for (const [name, helper] of helpers) {
|
||||
@ -206,4 +207,21 @@ class TemplateRenderer {
|
||||
|
||||
return [...tags].join(', ');
|
||||
}
|
||||
|
||||
_eachUpTo(context, iterable, maxCount, options) {
|
||||
if (iterable) {
|
||||
const results = [];
|
||||
let any = false;
|
||||
for (const entry of iterable) {
|
||||
any = true;
|
||||
if (results.length >= maxCount) { break; }
|
||||
const processedEntry = options.fn(entry);
|
||||
results.push(processedEntry);
|
||||
}
|
||||
if (any) {
|
||||
return results.join('');
|
||||
}
|
||||
}
|
||||
return options.inverse(context);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user