aboutsummaryrefslogtreecommitdiff
path: root/ext/bg/js/template-renderer.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/bg/js/template-renderer.js')
-rw-r--r--ext/bg/js/template-renderer.js20
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);
+ }
}