foop
Version:
interfaces that describe their intentions.
42 lines (39 loc) • 2.88 kB
JavaScript
var argumentor = require('../cast/argumentsToArray')
var curryN = require('./curry')
var nth = require('./nth')
/**
* @desc Returns a function which returns its nth argument.
* @memberOf fp
* @since 5.0.0-beta.6
*
* @param {Number} n arg to get
* @return {Function}
* @see deps/argumentor
*
* @curried 1
* @tests fp/nthArg
*
* @func
* @fork v0.9.0
* @category Function
* @sig Number -> *... -> *
*
* @symb nthArg(-1)(a, b, c) = c
* @symb nthArg(0)(a, b, c) = a
* @symb nthArg(1)(a, b, c) = b
*
* @example
*
* nthArg(1)('a', 'b', 'c') //=> 'b'
* nthArg(-1)('a', 'b', 'c') //=> 'c'
*
*/
var nthArg = function(n) {
var arity = n < 0 ? 1 : n + 1
return curryN(arity, function() {
// return nth(n, argumentor.apply(null, arguments))
return nth(argumentor.apply(null, arguments), n)
})
}
module.exports = nthArg
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnRoQXJnLmpzIiwic291cmNlcyI6WyJudGhBcmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgYXJndW1lbnRvciA9IHJlcXVpcmUoJy4uL2Nhc3QvYXJndW1lbnRzVG9BcnJheScpXG5jb25zdCBjdXJyeU4gPSByZXF1aXJlKCcuL2N1cnJ5JylcbmNvbnN0IG50aCA9IHJlcXVpcmUoJy4vbnRoJylcblxuLyoqXG4gKiBAZGVzYyBSZXR1cm5zIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBpdHMgbnRoIGFyZ3VtZW50LlxuICogQG1lbWJlck9mIGZwXG4gKiBAc2luY2UgNS4wLjAtYmV0YS42XG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG4gYXJnIHRvIGdldFxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKiBAc2VlIGRlcHMvYXJndW1lbnRvclxuICpcbiAqIEBjdXJyaWVkIDFcbiAqIEB0ZXN0cyBmcC9udGhBcmdcbiAqXG4gKiBAZnVuY1xuICogQGZvcmsgdjAuOS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBzaWcgTnVtYmVyIC0+ICouLi4gLT4gKlxuICpcbiAqIEBzeW1iIG50aEFyZygtMSkoYSwgYiwgYykgPSBjXG4gKiBAc3ltYiBudGhBcmcoMCkoYSwgYiwgYykgPSBhXG4gKiBAc3ltYiBudGhBcmcoMSkoYSwgYiwgYykgPSBiXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIG50aEFyZygxKSgnYScsICdiJywgJ2MnKSAgLy89PiAnYidcbiAqICAgICAgbnRoQXJnKC0xKSgnYScsICdiJywgJ2MnKSAvLz0+ICdjJ1xuICpcbiAqL1xuY29uc3QgbnRoQXJnID0gZnVuY3Rpb24obikge1xuICBjb25zdCBhcml0eSA9IG4gPCAwID8gMSA6IG4gKyAxXG4gIHJldHVybiBjdXJyeU4oYXJpdHksIGZ1bmN0aW9uKCkge1xuICAgIC8vIHJldHVybiBudGgobiwgYXJndW1lbnRvci5hcHBseShudWxsLCBhcmd1bWVudHMpKVxuICAgIHJldHVybiBudGgoYXJndW1lbnRvci5hcHBseShudWxsLCBhcmd1bWVudHMpLCBuKVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG50aEFyZ1xuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsMEJBQTBCLENBQUM7QUFDdERBLEdBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUNqQ0EsR0FBSyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZCNUJBLEdBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEVBQUU7RUFDekJBLEdBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7RUFDL0IsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVc7O0lBRTlCLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztHQUNqRCxDQUFDO0NBQ0g7O0FBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNOyJ9