summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/math/min.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/locutus/php/math/min.js')
-rw-r--r--node_modules/locutus/php/math/min.js121
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