Initial commit
[yaffs-website] / node_modules / sass-graph / node_modules / lodash / size.js
1 var baseKeys = require('./_baseKeys'),
2     getTag = require('./_getTag'),
3     isArrayLike = require('./isArrayLike'),
4     isString = require('./isString'),
5     stringSize = require('./_stringSize');
6
7 /** `Object#toString` result references. */
8 var mapTag = '[object Map]',
9     setTag = '[object Set]';
10
11 /**
12  * Gets the size of `collection` by returning its length for array-like
13  * values or the number of own enumerable string keyed properties for objects.
14  *
15  * @static
16  * @memberOf _
17  * @since 0.1.0
18  * @category Collection
19  * @param {Array|Object|string} collection The collection to inspect.
20  * @returns {number} Returns the collection size.
21  * @example
22  *
23  * _.size([1, 2, 3]);
24  * // => 3
25  *
26  * _.size({ 'a': 1, 'b': 2 });
27  * // => 2
28  *
29  * _.size('pebbles');
30  * // => 7
31  */
32 function size(collection) {
33   if (collection == null) {
34     return 0;
35   }
36   if (isArrayLike(collection)) {
37     return isString(collection) ? stringSize(collection) : collection.length;
38   }
39   var tag = getTag(collection);
40   if (tag == mapTag || tag == setTag) {
41     return collection.size;
42   }
43   return baseKeys(collection).length;
44 }
45
46 module.exports = size;