forked from helpers/handlebars-helpers
-
Notifications
You must be signed in to change notification settings - Fork 4
/
collection.js
41 lines (37 loc) · 1 KB
/
collection.js
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
40
41
const utils = require('./utils');
/**
* @exports collection
*/
const helpers = module.exports;
/**
* Inline, subexpression, or block helper that returns true (or the block)
* if the given collection is empty, or false (or the inverse block, if
* supplied) if the colleciton is not empty.
*
* ```handlebars
* <!-- array: [] -->
* {{#isEmpty array}}AAA{{else}}BBB{{/isEmpty}}
* <!-- results in: 'AAA' -->
*
* <!-- array: [] -->
* {{isEmpty array}}
* <!-- results in: true -->
* ```
* @param {Object} `collection`
* @param {Object} `options`
* @return {String}
* @block
* @api public
*/
helpers.isEmpty = function(collection, options) {
if (!utils.isOptions(options)) {
options = collection;
return utils.fn(true, this, options);
}
if (Array.isArray(collection) && !collection.length) {
return utils.fn(true, this, options);
}
const keys = Object.keys(collection);
const isEmpty = typeof collection === 'object' && !keys.length;
return utils.value(isEmpty, this, options);
};