diff options
Diffstat (limited to 'lib/handlebars/helpers/with.js')
-rw-r--r-- | lib/handlebars/helpers/with.js | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/handlebars/helpers/with.js b/lib/handlebars/helpers/with.js new file mode 100644 index 0000000..7418cd0 --- /dev/null +++ b/lib/handlebars/helpers/with.js @@ -0,0 +1,24 @@ +import {appendContextPath, blockParams, createFrame, isEmpty, isFunction} from '../utils'; + +export default function(instance) { + instance.registerHelper('with', function(context, options) { + if (isFunction(context)) { context = context.call(this); } + + let fn = options.fn; + + if (!isEmpty(context)) { + let data = options.data; + if (options.data && options.ids) { + data = createFrame(options.data); + data.contextPath = appendContextPath(options.data.contextPath, options.ids[0]); + } + + return fn(context, { + data: data, + blockParams: blockParams([context], [data && data.contextPath]) + }); + } else { + return options.inverse(this); + } + }); +} |