diff options
| -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); +    }  } |