diff options
Diffstat (limited to 'node_modules/locutus/php/math/min.js')
-rw-r--r-- | node_modules/locutus/php/math/min.js | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/node_modules/locutus/php/math/min.js b/node_modules/locutus/php/math/min.js new file mode 100644 index 0000000..40d2e29 --- /dev/null +++ b/node_modules/locutus/php/math/min.js @@ -0,0 +1,121 @@ +'use strict'; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +module.exports = function min() { + // discuss at: http://locutus.io/php/min/ + // original by: Onno Marsman (https://twitter.com/onnomarsman) + // revised by: Onno Marsman (https://twitter.com/onnomarsman) + // improved by: Jack + // note 1: Long code cause we're aiming for maximum PHP compatibility + // example 1: min(1, 3, 5, 6, 7) + // returns 1: 1 + // example 2: min([2, 4, 5]) + // returns 2: 2 + // example 3: min(0, 'hello') + // returns 3: 0 + // example 4: min('hello', 0) + // returns 4: 'hello' + // example 5: min(-1, 'hello') + // returns 5: -1 + // example 6: min([2, 4, 8], [2, 5, 7]) + // returns 6: [2, 4, 8] + + var ar; + var retVal; + var i = 0; + var n = 0; + var argv = arguments; + var argc = argv.length; + var _obj2Array = function _obj2Array(obj) { + if (Object.prototype.toString.call(obj) === '[object Array]') { + return obj; + } + var ar = []; + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + ar.push(obj[i]); + } + } + return ar; + }; + + var _compare = function _compare(current, next) { + var i = 0; + var n = 0; + var tmp = 0; + var nl = 0; + var cl = 0; + + if (current === next) { + return 0; + } else if ((typeof current === 'undefined' ? 'undefined' : _typeof(current)) === 'object') { + if ((typeof next === 'undefined' ? 'undefined' : _typeof(next)) === 'object') { + current = _obj2Array(current); + next = _obj2Array(next); + cl = current.length; + nl = next.length; + if (nl > cl) { + return 1; + } else if (nl < cl) { + return -1; + } + for (i = 0, n = cl; i < n; ++i) { + tmp = _compare(current[i], next[i]); + if (tmp === 1) { + return 1; + } else if (tmp === -1) { + return -1; + } + } + return 0; + } + return -1; + } else if ((typeof next === 'undefined' ? 'undefined' : _typeof(next)) === 'object') { + return 1; + } else if (isNaN(next) && !isNaN(current)) { + if (current === 0) { + return 0; + } + return current < 0 ? 1 : -1; + } else if (isNaN(current) && !isNaN(next)) { + if (next === 0) { + return 0; + } + return next > 0 ? 1 : -1; + } + + if (next === current) { + return 0; + } + + return next > current ? 1 : -1; + }; + + if (argc === 0) { + throw new Error('At least one value should be passed to min()'); + } else if (argc === 1) { + if (_typeof(argv[0]) === 'object') { + ar = _obj2Array(argv[0]); + } else { + throw new Error('Wrong parameter count for min()'); + } + + if (ar.length === 0) { + throw new Error('Array must contain at least one element for min()'); + } + } else { + ar = argv; + } + + retVal = ar[0]; + + for (i = 1, n = ar.length; i < n; ++i) { + if (_compare(retVal, ar[i]) === -1) { + retVal = ar[i]; + } + } + + return retVal; +}; +//# sourceMappingURL=min.js.map
\ No newline at end of file |