foop
Version:
interfaces that describe their intentions.
36 lines (33 loc) • 2.73 kB
JavaScript
var pipeTwo = require('../fp/pipeTwo')
var numberFromZero = require('./numberFromZero')
var length = require('./length')
/**
* @desc when length > 1, use length-1
* otherwise, when length == 1, use 0
* default, use length
*
* @memberOf util
* @since 5.0.0-beta.2
* @name lengthFromZero
*
* @param {Array | Object | number} obj with length
* @return {number} obj length from 0
*
* @see util/length
* @see util/lengthMinusOne
* @see util/numberFromZero
*
* @example
*
* lengthFromZero([1]) //=> 1
* lengthFromZero([]) //=> 0
* lengthFromZero([1, 2, 3]) //=> 2
* lengthFromZero({length: -1}) //=> 0
*
*/
module.exports = pipeTwo(length, numberFromZero)
// * @TODO lense to use an object, or transform it to one with .length?
// * const len = prop('length')
// * // when isObj, use len, otherwise, value
// * const coerceLength = lense([isObj, len])
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVuZ3RoRnJvbVplcm8uanMiLCJzb3VyY2VzIjpbImxlbmd0aEZyb21aZXJvLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHBpcGVUd28gPSByZXF1aXJlKCcuLi9mcC9waXBlVHdvJylcbmNvbnN0IG51bWJlckZyb21aZXJvID0gcmVxdWlyZSgnLi9udW1iZXJGcm9tWmVybycpXG5jb25zdCBsZW5ndGggPSByZXF1aXJlKCcuL2xlbmd0aCcpXG5cbi8qKlxuICogQGRlc2Mgd2hlbiBsZW5ndGggPiAxLCB1c2UgbGVuZ3RoLTFcbiAqICAgICAgIG90aGVyd2lzZSwgd2hlbiBsZW5ndGggPT0gMSwgdXNlIDBcbiAqICAgICAgIGRlZmF1bHQsIHVzZSBsZW5ndGhcbiAqXG4gKiBAbWVtYmVyT2YgdXRpbFxuICogQHNpbmNlIDUuMC4wLWJldGEuMlxuICogQG5hbWUgbGVuZ3RoRnJvbVplcm9cbiAqXG4gKiBAcGFyYW0ge0FycmF5IHwgT2JqZWN0IHwgbnVtYmVyfSBvYmogd2l0aCBsZW5ndGhcbiAqIEByZXR1cm4ge251bWJlcn0gb2JqIGxlbmd0aCBmcm9tIDBcbiAqXG4gKiBAc2VlIHV0aWwvbGVuZ3RoXG4gKiBAc2VlIHV0aWwvbGVuZ3RoTWludXNPbmVcbiAqIEBzZWUgdXRpbC9udW1iZXJGcm9tWmVyb1xuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgbGVuZ3RoRnJvbVplcm8oWzFdKSAgICAgICAgLy89PiAxXG4gKiAgICBsZW5ndGhGcm9tWmVybyhbXSkgICAgICAgICAvLz0+IDBcbiAqICAgIGxlbmd0aEZyb21aZXJvKFsxLCAyLCAzXSkgIC8vPT4gMlxuICogICAgbGVuZ3RoRnJvbVplcm8oe2xlbmd0aDogLTF9KSAgIC8vPT4gMFxuICpcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBwaXBlVHdvKGxlbmd0aCwgbnVtYmVyRnJvbVplcm8pXG5cbi8vICogQFRPRE8gbGVuc2UgdG8gdXNlIGFuIG9iamVjdCwgb3IgdHJhbnNmb3JtIGl0IHRvIG9uZSB3aXRoIC5sZW5ndGg/XG4vLyAqICBjb25zdCBsZW4gPSBwcm9wKCdsZW5ndGgnKVxuLy8gKiAgLy8gd2hlbiBpc09iaiwgdXNlIGxlbiwgb3RoZXJ3aXNlLCB2YWx1ZVxuLy8gKiAgY29uc3QgY29lcmNlTGVuZ3RoID0gbGVuc2UoW2lzT2JqLCBsZW5dKVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO0FBQ3hDQSxHQUFLLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztBQUNsREEsR0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCbEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQzs7Ozs7OyJ9