chain-able
Version:
interfaces that describe their intentions.
64 lines (62 loc) • 4.82 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
* @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
*
* @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]
*
*/
module.exports = function(ar) {
// @NOTE: !'' === true
if (isStringPrimitive(ar)) { return ar.includes(',') ? ar.split(',') : [ar] }
else if (!ar) { return [ar] }
else if (isArray(ar)) { return ar }
else if (isSet(ar) || isMap(ar) || ar.values) {
/**
* @desc when using `new Set().values`... no forEach o.o
* .values is also on `Object`...
*/
return ArrayFrom(ar.values(ar))
}
else if (isIterator(ar)) { return ArrayFrom(ar) }
else { return [ar] }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tYXJyLmpzIiwic291cmNlcyI6WyJ0by1hcnIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNTdHJpbmdQcmltaXRpdmUgPSByZXF1aXJlKCcuL2lzL3N0cmluZ1ByaW1pdGl2ZScpXG5jb25zdCBpc0FycmF5ID0gcmVxdWlyZSgnLi9pcy9hcnJheScpXG5jb25zdCBpc1NldCA9IHJlcXVpcmUoJy4vaXMvc2V0JylcbmNvbnN0IGlzTWFwID0gcmVxdWlyZSgnLi9pcy9tYXAnKVxuY29uc3QgaXNJdGVyYXRvciA9IHJlcXVpcmUoJy4vaXMvaXRlcmF0b3InKVxuY29uc3QgQXJyYXlGcm9tID0gcmVxdWlyZSgnLi91dGlsL2Zyb20nKVxuXG4vKipcbiAqIEBkZXNjIGFueXRoaW5nIGludG8gYW4gYXJyYXlcbiAqIEBzaWcgKiA9PiBBcnJheVxuICogQHNpbmNlIDAuMC4xXG4gKlxuICogQHBhcmFtICB7YW55fSBhciB0dXJuIHRoaXMgaW50byBhbiBhcnJheVxuICogQHJldHVybiB7QXJyYXl9IGFueXRoaW5nIGludG8gYW4gYXJyYXlcbiAqXG4gKiBAdGVzdHMgZGVwcy90by1hcnJcbiAqIEB0eXBlcyBkZXBzXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgIHRvYXJyKFtdKVxuICogICAvLyA9PiBbXVxuICpcbiAqICAgdG9hcnIoJycpXG4gKiAgIC8vID0+IFsnJ11cbiAqXG4gKiAgIHRvYXJyKCcxLDInKVxuICogICAvLyA9PiBbJzEnLCAnMiddXG4gKlxuICogICB0b2FycignMSwyJylcbiAqICAgLy8gPT4gWycxJywgJzInXVxuICpcbiAqICAgY29uc3QgbWFwID0gbmV3IE1hcCgpXG4gKiAgIG1hcC5zZXQoJ2VoJywgdHJ1ZSlcbiAqICAgY29uc3QgYXJyID0gdG9hcnIobWFwLmVudHJpZXMoKSlcbiAqICAgLy8gPT4gWydlaCcsIHRydWVdXG4gKlxuICogICBjb25zdCBzZXQgPSBuZXcgU2V0KClcbiAqICAgc2V0LmFkZCgnZWgnKVxuICogICBzZXQuYWRkKHRydWUpXG4gKiAgIGNvbnN0IGFyciA9IHRvYXJyKG1hcC5lbnRyaWVzKCkpXG4gKiAgIC8vID0+IFsnZWgnLCB0cnVlXVxuICpcbiAqICAgdG9hcnIoJycpLmNvbmNhdCh0b2FycihmYWxzZSkpLmNvbmNhdCh0b2FycihudWxsKSlcbiAqICAgLy8gPT4gWycnLCBmYWxzZSwgbnVsbF1cbiAqXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYXIpIHtcbiAgLy8gQE5PVEU6ICEnJyA9PT0gdHJ1ZVxuICBpZiAoaXNTdHJpbmdQcmltaXRpdmUoYXIpKSByZXR1cm4gYXIuaW5jbHVkZXMoJywnKSA/IGFyLnNwbGl0KCcsJykgOiBbYXJdXG4gIGVsc2UgaWYgKCFhcikgcmV0dXJuIFthcl1cbiAgZWxzZSBpZiAoaXNBcnJheShhcikpIHJldHVybiBhclxuICBlbHNlIGlmIChpc1NldChhcikgfHwgaXNNYXAoYXIpIHx8IGFyLnZhbHVlcykge1xuICAgIC8qKlxuICAgICAqIEBkZXNjIHdoZW4gdXNpbmcgYG5ldyBTZXQoKS52YWx1ZXNgLi4uIG5vIGZvckVhY2ggby5vXG4gICAgICogICAgICAgLnZhbHVlcyBpcyBhbHNvIG9uIGBPYmplY3RgLi4uXG4gICAgICovXG4gICAgcmV0dXJuIEFycmF5RnJvbShhci52YWx1ZXMoYXIpKVxuICB9XG4gIGVsc2UgaWYgKGlzSXRlcmF0b3IoYXIpKSByZXR1cm4gQXJyYXlGcm9tKGFyKVxuICBlbHNlIHJldHVybiBbYXJdXG59XG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDO0FBQ3pEQSxHQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDckNBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUNqQ0EsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ2pDQSxHQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUM7QUFDM0NBLEdBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEN4QyxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsRUFBRSxFQUFFOztFQUU1QixJQUFJLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUEsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQTtPQUNwRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUEsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFBO09BQ3BCLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUEsT0FBTyxFQUFFLEVBQUE7T0FDMUIsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7Ozs7O0lBSzVDLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7R0FDaEM7T0FDSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFBLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFBO09BQ3hDLEVBQUEsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFBO0NBQ2pCOyJ9