foop
Version:
interfaces that describe their intentions.
74 lines (71 loc) • 5.43 kB
JavaScript
var isStringPrimitive = require('./is/stringPrimitive')
var isArray = require('./is/array')
var isSet = require('./is/set')
var isMap = require('./is/map')
var isIterator = require('./is/iterator')
var ArrayFrom = require('./util/from')
/**
* @desc anything into an array
* @memberOf cast
* @name toArr
* @alias toArray
*
* @sig * => Array
* @since 0.0.1
*
* @param {any} ar turn this into an array
* @return {Array} anything into an array
*
* @tests deps/to-arr
* @types deps
*
* {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L465 underscore-to-arr}
* @see {@link underscore-to-arr}
*
* @example
*
* toarr([])
* //=> []
*
* toarr('')
* //=> ['']
*
* toarr('1,2')
* //=> ['1', '2']
*
* toarr('1,2')
* //=> ['1', '2']
*
* const map = new Map()
* map.set('eh', true)
* const arr = toarr(map.entries())
* //=> ['eh', true]
*
* const set = new Set()
* set.add('eh')
* set.add(true)
* const arr = toarr(map.entries())
* //=> ['eh', true]
*
* toarr('').concat(toarr(false)).concat(toarr(null))
* //=> ['', false, null]
*
*/
var toArray = function(ar) {
// @NOTE: !'' === true
if (isStringPrimitive(ar)) { return ar.includes(',') ? ar.split(',') : [ar] }
else if (!ar) { return [ar] }
else if (isArray(ar)) { return ar }
// hasIn(ar, 'values')
else if (isSet(ar) || isMap(ar) || ar.values) {
/**
* @desc when using `new Set().values`... no forEach o.o
* @NOTE .values is also on `Object`...
*/
return ArrayFrom(ar.values(ar))
}
else if (isIterator(ar)) { return ArrayFrom(ar) }
else { return [ar] }
}
module.exports = toArray
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tYXJyLmpzIiwic291cmNlcyI6WyJ0by1hcnIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNTdHJpbmdQcmltaXRpdmUgPSByZXF1aXJlKCcuL2lzL3N0cmluZ1ByaW1pdGl2ZScpXG5jb25zdCBpc0FycmF5ID0gcmVxdWlyZSgnLi9pcy9hcnJheScpXG5jb25zdCBpc1NldCA9IHJlcXVpcmUoJy4vaXMvc2V0JylcbmNvbnN0IGlzTWFwID0gcmVxdWlyZSgnLi9pcy9tYXAnKVxuY29uc3QgaXNJdGVyYXRvciA9IHJlcXVpcmUoJy4vaXMvaXRlcmF0b3InKVxuY29uc3QgQXJyYXlGcm9tID0gcmVxdWlyZSgnLi91dGlsL2Zyb20nKVxuXG4vKipcbiAqIEBkZXNjIGFueXRoaW5nIGludG8gYW4gYXJyYXlcbiAqIEBtZW1iZXJPZiBjYXN0XG4gKiBAbmFtZSB0b0FyclxuICogQGFsaWFzIHRvQXJyYXlcbiAqXG4gKiBAc2lnICogPT4gQXJyYXlcbiAqIEBzaW5jZSAwLjAuMVxuICpcbiAqIEBwYXJhbSAge2FueX0gYXIgdHVybiB0aGlzIGludG8gYW4gYXJyYXlcbiAqIEByZXR1cm4ge0FycmF5fSBhbnl0aGluZyBpbnRvIGFuIGFycmF5XG4gKlxuICogQHRlc3RzIGRlcHMvdG8tYXJyXG4gKiBAdHlwZXMgZGVwc1xuICpcbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvYmxvYi9tYXN0ZXIvdW5kZXJzY29yZS5qcyNMNDY1IHVuZGVyc2NvcmUtdG8tYXJyfVxuICogQHNlZSB7QGxpbmsgdW5kZXJzY29yZS10by1hcnJ9XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgIHRvYXJyKFtdKVxuICogICAvLz0+IFtdXG4gKlxuICogICB0b2FycignJylcbiAqICAgLy89PiBbJyddXG4gKlxuICogICB0b2FycignMSwyJylcbiAqICAgLy89PiBbJzEnLCAnMiddXG4gKlxuICogICB0b2FycignMSwyJylcbiAqICAgLy89PiBbJzEnLCAnMiddXG4gKlxuICogICBjb25zdCBtYXAgPSBuZXcgTWFwKClcbiAqICAgbWFwLnNldCgnZWgnLCB0cnVlKVxuICogICBjb25zdCBhcnIgPSB0b2FycihtYXAuZW50cmllcygpKVxuICogICAvLz0+IFsnZWgnLCB0cnVlXVxuICpcbiAqICAgY29uc3Qgc2V0ID0gbmV3IFNldCgpXG4gKiAgIHNldC5hZGQoJ2VoJylcbiAqICAgc2V0LmFkZCh0cnVlKVxuICogICBjb25zdCBhcnIgPSB0b2FycihtYXAuZW50cmllcygpKVxuICogICAvLz0+IFsnZWgnLCB0cnVlXVxuICpcbiAqICAgdG9hcnIoJycpLmNvbmNhdCh0b2FycihmYWxzZSkpLmNvbmNhdCh0b2FycihudWxsKSlcbiAqICAgLy89PiBbJycsIGZhbHNlLCBudWxsXVxuICpcbiAqL1xuY29uc3QgdG9BcnJheSA9IGZ1bmN0aW9uKGFyKSB7XG4gIC8vIEBOT1RFOiAhJycgPT09IHRydWVcbiAgaWYgKGlzU3RyaW5nUHJpbWl0aXZlKGFyKSkgcmV0dXJuIGFyLmluY2x1ZGVzKCcsJykgPyBhci5zcGxpdCgnLCcpIDogW2FyXVxuICBlbHNlIGlmICghYXIpIHJldHVybiBbYXJdXG4gIGVsc2UgaWYgKGlzQXJyYXkoYXIpKSByZXR1cm4gYXJcbiAgLy8gaGFzSW4oYXIsICd2YWx1ZXMnKVxuICBlbHNlIGlmIChpc1NldChhcikgfHwgaXNNYXAoYXIpIHx8IGFyLnZhbHVlcykge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIHdoZW4gdXNpbmcgYG5ldyBTZXQoKS52YWx1ZXNgLi4uIG5vIGZvckVhY2ggby5vXG4gICAgICogQE5PVEUgLnZhbHVlcyBpcyBhbHNvIG9uIGBPYmplY3RgLi4uXG4gICAgICovXG4gICAgcmV0dXJuIEFycmF5RnJvbShhci52YWx1ZXMoYXIpKVxuICB9XG4gIGVsc2UgaWYgKGlzSXRlcmF0b3IoYXIpKSByZXR1cm4gQXJyYXlGcm9tKGFyKVxuICBlbHNlIHJldHVybiBbYXJdXG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9BcnJheVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztBQUN6REEsR0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ3JDQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7QUFDakNBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUNqQ0EsR0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO0FBQzNDQSxHQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRHhDQSxHQUFLLENBQUMsT0FBTyxHQUFHLFNBQVMsRUFBRSxFQUFFOztFQUUzQixJQUFJLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUEsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQTtPQUNwRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUEsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFBO09BQ3BCLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUEsT0FBTyxFQUFFLEVBQUE7O09BRTFCLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFOzs7OztJQUs1QyxPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0dBQ2hDO09BQ0ksSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBQSxPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBQTtPQUN4QyxFQUFBLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBQTtDQUNqQjs7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU87In0=