Security update for permissions_by_term
[yaffs-website] / node_modules / uncss / node_modules / lodash / toArray.js
1 var Symbol = require('./internal/Symbol'),
2     copyArray = require('./internal/copyArray'),
3     getTag = require('./internal/getTag'),
4     isArrayLike = require('./isArrayLike'),
5     isString = require('./isString'),
6     iteratorToArray = require('./internal/iteratorToArray'),
7     mapToArray = require('./internal/mapToArray'),
8     setToArray = require('./internal/setToArray'),
9     stringToArray = require('./internal/stringToArray'),
10     values = require('./values');
11
12 /** `Object#toString` result references. */
13 var mapTag = '[object Map]',
14     setTag = '[object Set]';
15
16 /** Built-in value references. */
17 var iteratorSymbol = typeof (iteratorSymbol = Symbol && Symbol.iterator) == 'symbol' ? iteratorSymbol : undefined;
18
19 /**
20  * Converts `value` to an array.
21  *
22  * @static
23  * @memberOf _
24  * @category Lang
25  * @param {*} value The value to convert.
26  * @returns {Array} Returns the converted array.
27  * @example
28  *
29  * _.toArray({ 'a': 1, 'b': 2 });
30  * // => [1, 2]
31  *
32  * _.toArray('abc');
33  * // => ['a', 'b', 'c']
34  *
35  * _.toArray(1);
36  * // => []
37  *
38  * _.toArray(null);
39  * // => []
40  */
41 function toArray(value) {
42   if (!value) {
43     return [];
44   }
45   if (isArrayLike(value)) {
46     return isString(value) ? stringToArray(value) : copyArray(value);
47   }
48   if (iteratorSymbol && value[iteratorSymbol]) {
49     return iteratorToArray(value[iteratorSymbol]());
50   }
51   var tag = getTag(value),
52       func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
53
54   return func(value);
55 }
56
57 module.exports = toArray;