summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/strings/strnatcmp.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/locutus/php/strings/strnatcmp.js')
-rw-r--r--node_modules/locutus/php/strings/strnatcmp.js119
1 files changed, 0 insertions, 119 deletions
diff --git a/node_modules/locutus/php/strings/strnatcmp.js b/node_modules/locutus/php/strings/strnatcmp.js
deleted file mode 100644
index af2875c..0000000
--- a/node_modules/locutus/php/strings/strnatcmp.js
+++ /dev/null
@@ -1,119 +0,0 @@
-'use strict';
-
-module.exports = function strnatcmp(a, b) {
- // discuss at: http://locutus.io/php/strnatcmp/
- // original by: Martijn Wieringa
- // improved by: Michael White (http://getsprink.com)
- // improved by: Jack
- // bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)
- // reimplemented by: RafaƂ Kukawski
- // example 1: strnatcmp('abc', 'abc')
- // returns 1: 0
- // example 2: strnatcmp('a', 'b')
- // returns 2: -1
- // example 3: strnatcmp('10', '1')
- // returns 3: 1
- // example 4: strnatcmp('0000abc', '0abc')
- // returns 4: 0
- // example 5: strnatcmp('1239', '12345')
- // returns 5: -1
- // example 6: strnatcmp('t01239', 't012345')
- // returns 6: 1
- // example 7: strnatcmp('0A', '5N')
- // returns 7: -1
-
- var _phpCastString = require('../_helpers/_phpCastString');
-
- var leadingZeros = /^0+(?=\d)/;
- var whitespace = /^\s/;
- var digit = /^\d/;
-
- if (arguments.length !== 2) {
- return null;
- }
-
- a = _phpCastString(a);
- b = _phpCastString(b);
-
- if (!a.length || !b.length) {
- return a.length - b.length;
- }
-
- var i = 0;
- var j = 0;
-
- a = a.replace(leadingZeros, '');
- b = b.replace(leadingZeros, '');
-
- while (i < a.length && j < b.length) {
- // skip consecutive whitespace
- while (whitespace.test(a.charAt(i))) {
- i++;
- }while (whitespace.test(b.charAt(j))) {
- j++;
- }var ac = a.charAt(i);
- var bc = b.charAt(j);
- var aIsDigit = digit.test(ac);
- var bIsDigit = digit.test(bc);
-
- if (aIsDigit && bIsDigit) {
- var bias = 0;
- var fractional = ac === '0' || bc === '0';
-
- do {
- if (!aIsDigit) {
- return -1;
- } else if (!bIsDigit) {
- return 1;
- } else if (ac < bc) {
- if (!bias) {
- bias = -1;
- }
-
- if (fractional) {
- return -1;
- }
- } else if (ac > bc) {
- if (!bias) {
- bias = 1;
- }
-
- if (fractional) {
- return 1;
- }
- }
-
- ac = a.charAt(++i);
- bc = b.charAt(++j);
-
- aIsDigit = digit.test(ac);
- bIsDigit = digit.test(bc);
- } while (aIsDigit || bIsDigit);
-
- if (!fractional && bias) {
- return bias;
- }
-
- continue;
- }
-
- if (!ac || !bc) {
- continue;
- } else if (ac < bc) {
- return -1;
- } else if (ac > bc) {
- return 1;
- }
-
- i++;
- j++;
- }
-
- var iBeforeStrEnd = i < a.length;
- var jBeforeStrEnd = j < b.length;
-
- // Check which string ended first
- // return -1 if a, 1 if b, 0 otherwise
- return (iBeforeStrEnd > jBeforeStrEnd) - (iBeforeStrEnd < jBeforeStrEnd);
-};
-//# sourceMappingURL=strnatcmp.js.map \ No newline at end of file