UNPKG

1.18 kBPlain TextView Raw
1import { IHtmlEngineHelper, IHandlebarsOptions } from './html-engine-helper.interface';
2
3export class ObjectLengthHelper implements IHtmlEngineHelper {
4 public helperFunc(context: any, obj: Object, operator: string, length: number) {
5 let len = arguments.length - 1;
6 let options: IHandlebarsOptions = arguments[len];
7
8 if (typeof obj !== 'object') {
9 return options.inverse(context);
10 }
11
12 let size = 0,
13 key;
14 for (key in obj) {
15 if (obj.hasOwnProperty(key)) {
16 size++;
17 }
18 }
19
20 let result;
21 switch (operator) {
22 case '===':
23 result = size === length;
24 break;
25 case '!==':
26 result = size !== length;
27 break;
28 case '>':
29 result = size > length;
30 break;
31 default: {
32 throw new Error('helper {{objectLength}}: invalid operator: `' + operator + '`');
33 }
34 }
35
36 if (result === false) {
37 return options.inverse(context);
38 }
39 return options.fn(context);
40 }
41}