foop
Version:
interfaces that describe their intentions.
54 lines (48 loc) • 4.69 kB
JavaScript
var isFunction = require('../../is/function')
var isObjTag = require('../../is/objTag')
var curry = require('../../fp/curry')
var keys = require('../../util/keys')
var preAllocate = require('../../array/preAllocate')
var reduce = require('./_reduce')
/**
* @desc `while (index < list.length) push fn(list[index++])`
* @name _map
* @alias baseMaps
* @since 5.0.0-beta.1
* @memberOf loop
*
* {@link https://github.com/ramda/ramda/blob/master/src/internal/_map.js ramda-_map}
* @see {@link ramda-_map}
*
* @param {Function} fn function to apply
* @param {Function|List} functorList function/list
* @return {Array}
*/
function _map(fn, functorList) {
var idx = 0
var len = functorList.length
var result = preAllocate(len)
while (idx < len) {
result[idx] = fn(functorList[idx])
idx += 1
}
return result
}
function map(fn, functor) {
if (isFunction(functor)) {
return curry(functor.length, function() {
return fn.call(this, functor.apply(this, arguments))
})
}
else if (isObjTag(functor)) {
return reduce(function(acc, key) {
acc[key] = fn(functor[key])
return acc
}, {}, keys(functor))
}
else {
return _map(fn, functor)
}
}
module.exports = map
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX21hcC5qcyIsInNvdXJjZXMiOlsiX21hcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi4vLi4vaXMvZnVuY3Rpb24nKVxuY29uc3QgaXNPYmpUYWcgPSByZXF1aXJlKCcuLi8uLi9pcy9vYmpUYWcnKVxuY29uc3QgY3VycnkgPSByZXF1aXJlKCcuLi8uLi9mcC9jdXJyeScpXG5jb25zdCBrZXlzID0gcmVxdWlyZSgnLi4vLi4vdXRpbC9rZXlzJylcbmNvbnN0IHByZUFsbG9jYXRlID0gcmVxdWlyZSgnLi4vLi4vYXJyYXkvcHJlQWxsb2NhdGUnKVxuY29uc3QgcmVkdWNlID0gcmVxdWlyZSgnLi9fcmVkdWNlJylcblxuLyoqXG4gKiBAZGVzYyBgd2hpbGUgKGluZGV4IDwgbGlzdC5sZW5ndGgpIHB1c2ggZm4obGlzdFtpbmRleCsrXSlgXG4gKiBAbmFtZSBfbWFwXG4gKiBAYWxpYXMgYmFzZU1hcHNcbiAqIEBzaW5jZSA1LjAuMC1iZXRhLjFcbiAqIEBtZW1iZXJPZiBsb29wXG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9yYW1kYS9yYW1kYS9ibG9iL21hc3Rlci9zcmMvaW50ZXJuYWwvX21hcC5qcyByYW1kYS1fbWFwfVxuICogQHNlZSB7QGxpbmsgcmFtZGEtX21hcH1cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBmdW5jdGlvbiB0byBhcHBseVxuICogQHBhcmFtIHtGdW5jdGlvbnxMaXN0fSBmdW5jdG9yTGlzdCBmdW5jdGlvbi9saXN0XG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqL1xuZnVuY3Rpb24gX21hcChmbiwgZnVuY3Rvckxpc3QpIHtcbiAgbGV0IGlkeCA9IDBcbiAgY29uc3QgbGVuID0gZnVuY3Rvckxpc3QubGVuZ3RoXG4gIGNvbnN0IHJlc3VsdCA9IHByZUFsbG9jYXRlKGxlbilcblxuICB3aGlsZSAoaWR4IDwgbGVuKSB7XG4gICAgcmVzdWx0W2lkeF0gPSBmbihmdW5jdG9yTGlzdFtpZHhdKVxuICAgIGlkeCArPSAxXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIG1hcChmbiwgZnVuY3Rvcikge1xuICBpZiAoaXNGdW5jdGlvbihmdW5jdG9yKSkge1xuICAgIHJldHVybiBjdXJyeShmdW5jdG9yLmxlbmd0aCwgZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBmdW5jdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpXG4gICAgfSlcbiAgfVxuICBlbHNlIGlmIChpc09ialRhZyhmdW5jdG9yKSkge1xuICAgIHJldHVybiByZWR1Y2UoZnVuY3Rpb24oYWNjLCBrZXkpIHtcbiAgICAgIGFjY1trZXldID0gZm4oZnVuY3RvcltrZXldKVxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIHt9LCBrZXlzKGZ1bmN0b3IpKVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiBfbWFwKGZuLCBmdW5jdG9yKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwXG4iXSwibmFtZXMiOlsiY29uc3QiLCJsZXQiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztBQUMvQ0EsR0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7QUFDM0NBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0FBQ3ZDQSxHQUFLLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUN2Q0EsR0FBSyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUM7QUFDdERBLEdBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWdCbkMsU0FBUyxJQUFJLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRTtFQUM3QkMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0VBQ1hELEdBQUssQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLE1BQU07RUFDOUJBLEdBQUssQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQzs7RUFFL0IsT0FBTyxHQUFHLEdBQUcsR0FBRyxFQUFFO0lBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLEdBQUcsSUFBSSxDQUFDO0dBQ1Q7O0VBRUQsT0FBTyxNQUFNO0NBQ2Q7O0FBRUQsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRTtFQUN4QixJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUN2QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVc7TUFDdEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNyRCxDQUFDO0dBQ0g7T0FDSSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUMxQixPQUFPLE1BQU0sQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLEVBQUU7TUFDL0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7TUFDM0IsT0FBTyxHQUFHO0tBQ1gsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0dBQ3RCO09BQ0k7SUFDSCxPQUFPLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDO0dBQ3pCO0NBQ0Y7O0FBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHOyJ9