diff options
Diffstat (limited to 'ext/bg/js')
-rw-r--r-- | ext/bg/js/template-renderer.js | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/ext/bg/js/template-renderer.js b/ext/bg/js/template-renderer.js index 27e5e548..f6c4374b 100644 --- a/ext/bg/js/template-renderer.js +++ b/ext/bg/js/template-renderer.js @@ -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); + } } |