Blame view

node_modules/clean-css/lib/utils/natural-compare.js 772 Bytes
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  // adapted from http://nedbatchelder.com/blog/200712.html#e20071211T054956
  
  var NUMBER_PATTERN = /([0-9]+)/;
  
  function naturalCompare(value1, value2) {
    var keys1 = ('' + value1).split(NUMBER_PATTERN).map(tryParseInt);
    var keys2 = ('' + value2).split(NUMBER_PATTERN).map(tryParseInt);
    var key1;
    var key2;
    var compareFirst = Math.min(keys1.length, keys2.length);
    var i, l;
  
    for (i = 0, l = compareFirst; i < l; i++) {
      key1 = keys1[i];
      key2 = keys2[i];
  
      if (key1 != key2) {
        return key1 > key2 ? 1 : -1;
      }
    }
  
    return keys1.length > keys2.length ? 1 : (keys1.length == keys2.length ? 0 : -1);
  }
  
  function tryParseInt(value) {
    return ('' + parseInt(value)) == value ?
      parseInt(value) :
      value;
  }
  
  module.exports = naturalCompare;