summaryrefslogtreecommitdiffstats
path: root/lib/handlebars/helpers/block-helper-missing.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/handlebars/helpers/block-helper-missing.js')
-rw-r--r--lib/handlebars/helpers/block-helper-missing.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/handlebars/helpers/block-helper-missing.js b/lib/handlebars/helpers/block-helper-missing.js
new file mode 100644
index 0000000..6639ddb
--- /dev/null
+++ b/lib/handlebars/helpers/block-helper-missing.js
@@ -0,0 +1,32 @@
+import {appendContextPath, createFrame, isArray} from '../utils';
+
+export default function(instance) {
+ instance.registerHelper('blockHelperMissing', function(context, options) {
+ let inverse = options.inverse,
+ fn = options.fn;
+
+ if (context === true) {
+ return fn(this);
+ } else if (context === false || context == null) {
+ return inverse(this);
+ } else if (isArray(context)) {
+ if (context.length > 0) {
+ if (options.ids) {
+ options.ids = [options.name];
+ }
+
+ return instance.helpers.each(context, options);
+ } else {
+ return inverse(this);
+ }
+ } else {
+ if (options.data && options.ids) {
+ let data = createFrame(options.data);
+ data.contextPath = appendContextPath(options.data.contextPath, options.name);
+ options = {data: data};
+ }
+
+ return fn(context, options);
+ }
+ });
+}