foop
Version:
interfaces that describe their intentions.
36 lines (33 loc) • 2.74 kB
JavaScript
var pipe = require('../fp/pipe')
var decrement = require('../math/decrement')
var length = require('./length')
/**
* @name lengthMinusOne
* @version 2.0.0 <- was going to ensure number stays above 0
* @since 5.0.0-beta.1
* @memberOf util
*
* @param {Array | Object} x object with property length
* @return {number}
*
* @example
*
* lengthMinusOne(['eh']) //=> 1
* lengthMinusOne({}) //=> 0
* lengthMinusOne({length: -1}) //=> 0
* lengthMinusOne({length: 10} ) //=> 10
*
*/
module.exports = function (x) { return decrement(length(x)); }
// module.exports = pipe(length, decrement)
// module.exports = x => {
// const len = length(x)
//
// // keep above 0
// return len <= 0 ? 0 : decrement(length(x))
// }
// @TODO
// module.exports = pipe(length, decrement)
// module.exports = x => length(x) - 1
// module.exports = x => decrement(length(x)) || 0
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVuZ3RoTWludXNPbmUuanMiLCJzb3VyY2VzIjpbImxlbmd0aE1pbnVzT25lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHBpcGUgPSByZXF1aXJlKCcuLi9mcC9waXBlJylcbmNvbnN0IGRlY3JlbWVudCA9IHJlcXVpcmUoJy4uL21hdGgvZGVjcmVtZW50JylcbmNvbnN0IGxlbmd0aCA9IHJlcXVpcmUoJy4vbGVuZ3RoJylcblxuLyoqXG4gKiBAbmFtZSBsZW5ndGhNaW51c09uZVxuICogQHZlcnNpb24gMi4wLjAgPC0gd2FzIGdvaW5nIHRvIGVuc3VyZSBudW1iZXIgc3RheXMgYWJvdmUgMFxuICogQHNpbmNlIDUuMC4wLWJldGEuMVxuICogQG1lbWJlck9mIHV0aWxcbiAqXG4gKiBAcGFyYW0gIHtBcnJheSB8IE9iamVjdH0geCBvYmplY3Qgd2l0aCBwcm9wZXJ0eSBsZW5ndGhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgIGxlbmd0aE1pbnVzT25lKFsnZWgnXSkgICAgICAgICAvLz0+IDFcbiAqICAgIGxlbmd0aE1pbnVzT25lKHt9KSAgICAgICAgICAgICAvLz0+IDBcbiAqICAgIGxlbmd0aE1pbnVzT25lKHtsZW5ndGg6IC0xfSkgICAvLz0+IDBcbiAqICAgIGxlbmd0aE1pbnVzT25lKHtsZW5ndGg6IDEwfSAgKSAvLz0+IDEwXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IHggPT4gZGVjcmVtZW50KGxlbmd0aCh4KSlcblxuLy8gbW9kdWxlLmV4cG9ydHMgPSBwaXBlKGxlbmd0aCwgZGVjcmVtZW50KVxuLy8gbW9kdWxlLmV4cG9ydHMgPSB4ID0+IHtcbi8vICAgY29uc3QgbGVuID0gbGVuZ3RoKHgpXG4vL1xuLy8gICAvLyBrZWVwIGFib3ZlIDBcbi8vICAgcmV0dXJuIGxlbiA8PSAwID8gMCA6IGRlY3JlbWVudChsZW5ndGgoeCkpXG4vLyB9XG4vLyBAVE9ET1xuLy8gbW9kdWxlLmV4cG9ydHMgPSBwaXBlKGxlbmd0aCwgZGVjcmVtZW50KVxuLy8gbW9kdWxlLmV4cG9ydHMgPSB4ID0+IGxlbmd0aCh4KSAtIDFcbi8vIG1vZHVsZS5leHBvcnRzID0geCA9PiBkZWNyZW1lbnQobGVuZ3RoKHgpKSB8fCAwXG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDbENBLEdBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0FBQzlDQSxHQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQmxDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBQSxDQUFDLENBQUEsQ0FBQyxBQUFHLFNBQUEsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFBOzs7Ozs7Ozs7Ozs7OyJ9