From e153971cd4a5768a6c7dc9df36cf446cf298227d Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Sun, 26 Jul 2020 16:50:56 -0400 Subject: Add eachUpTo function (#690) --- ext/bg/js/template-renderer.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'ext/bg') 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); + } } -- cgit v1.2.3