summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/strings/strnatcmp.js.map
blob: 01c91669dab8a693fe5015a7ebb941ba3eae6be0 (plain) (blame)
1
{"version":3,"sources":["../../../src/php/strings/strnatcmp.js"],"names":["module","exports","strnatcmp","a","b","_phpCastString","require","leadingZeros","whitespace","digit","arguments","length","i","j","replace","test","charAt","ac","bc","aIsDigit","bIsDigit","bias","fractional","iBeforeStrEnd","jBeforeStrEnd"],"mappings":"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","file":"strnatcmp.js","sourcesContent":["module.exports = function strnatcmp (a, b) {\n  //       discuss at: http://locutus.io/php/strnatcmp/\n  //      original by: Martijn Wieringa\n  //      improved by: Michael White (http://getsprink.com)\n  //      improved by: Jack\n  //      bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)\n  // reimplemented by: Rafał Kukawski\n  //        example 1: strnatcmp('abc', 'abc')\n  //        returns 1: 0\n  //        example 2: strnatcmp('a', 'b')\n  //        returns 2: -1\n  //        example 3: strnatcmp('10', '1')\n  //        returns 3: 1\n  //        example 4: strnatcmp('0000abc', '0abc')\n  //        returns 4: 0\n  //        example 5: strnatcmp('1239', '12345')\n  //        returns 5: -1\n  //        example 6: strnatcmp('t01239', 't012345')\n  //        returns 6: 1\n  //        example 7: strnatcmp('0A', '5N')\n  //        returns 7: -1\n\n  var _phpCastString = require('../_helpers/_phpCastString')\n\n  var leadingZeros = /^0+(?=\\d)/\n  var whitespace = /^\\s/\n  var digit = /^\\d/\n\n  if (arguments.length !== 2) {\n    return null\n  }\n\n  a = _phpCastString(a)\n  b = _phpCastString(b)\n\n  if (!a.length || !b.length) {\n    return a.length - b.length\n  }\n\n  var i = 0\n  var j = 0\n\n  a = a.replace(leadingZeros, '')\n  b = b.replace(leadingZeros, '')\n\n  while (i < a.length && j < b.length) {\n    // skip consecutive whitespace\n    while (whitespace.test(a.charAt(i))) i++\n    while (whitespace.test(b.charAt(j))) j++\n\n    var ac = a.charAt(i)\n    var bc = b.charAt(j)\n    var aIsDigit = digit.test(ac)\n    var bIsDigit = digit.test(bc)\n\n    if (aIsDigit && bIsDigit) {\n      var bias = 0\n      var fractional = ac === '0' || bc === '0'\n\n      do {\n        if (!aIsDigit) {\n          return -1\n        } else if (!bIsDigit) {\n          return 1\n        } else if (ac < bc) {\n          if (!bias) {\n            bias = -1\n          }\n\n          if (fractional) {\n            return -1\n          }\n        } else if (ac > bc) {\n          if (!bias) {\n            bias = 1\n          }\n\n          if (fractional) {\n            return 1\n          }\n        }\n\n        ac = a.charAt(++i)\n        bc = b.charAt(++j)\n\n        aIsDigit = digit.test(ac)\n        bIsDigit = digit.test(bc)\n      } while (aIsDigit || bIsDigit)\n\n      if (!fractional && bias) {\n        return bias\n      }\n\n      continue\n    }\n\n    if (!ac || !bc) {\n      continue\n    } else if (ac < bc) {\n      return -1\n    } else if (ac > bc) {\n      return 1\n    }\n\n    i++\n    j++\n  }\n\n  var iBeforeStrEnd = i < a.length\n  var jBeforeStrEnd = j < b.length\n\n  // Check which string ended first\n  // return -1 if a, 1 if b, 0 otherwise\n  return (iBeforeStrEnd > jBeforeStrEnd) - (iBeforeStrEnd < jBeforeStrEnd)\n}\n"]}