1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| import {
| appendContextPath,
| blockParams,
| createFrame,
| isEmpty,
| isFunction
| } from '../utils';
| import Exception from '../exception';
|
| export default function(instance) {
| instance.registerHelper('with', function(context, options) {
| if (arguments.length != 2) {
| throw new Exception('#with requires exactly one argument');
| }
| 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);
| }
| });
| }
|
|