import { IHtmlEngineHelper, IHandlebarsOptions } from './html-engine-helper.interface';
export class ObjectLengthHelper implements IHtmlEngineHelper {
public helperFunc(context: any, obj: Object, operator: string, length: number) {
let len = arguments.length - 1;
let options: IHandlebarsOptions = arguments[len];
if (typeof obj !== 'object') {
return options.inverse(context);
}
let size = 0,
key;
for (key in obj) {
if (obj.hasOwnProperty(key)) {
size++;
}
}
let result;
switch (operator) {
case '===':
result = size === length;
break;
case '!==':
result = size !== length;
break;
case '>':
result = size > length;
break;
default: {
throw new Error('helper {{objectLength}}: invalid operator: `' + operator + '`');
}
}
if (result === false) {
return options.inverse(context);
}
return options.fn(context);
}
}