| OLD | NEW |
| 1 dart_library.library('collection/src/comparators', null, /* Imports */[ | 1 dart_library.library('collection/src/comparators', null, /* Imports */[ |
| 2 "dart/_runtime", | 2 "dart/_runtime", |
| 3 'dart/core' | 3 'dart/core' |
| 4 ], /* Lazy imports */[ | 4 ], /* Lazy imports */[ |
| 5 ], function(exports, dart, core) { | 5 ], function(exports, dart, core) { |
| 6 'use strict'; | 6 'use strict'; |
| 7 let dartx = dart.dartx; | 7 let dartx = dart.dartx; |
| 8 const _zero = 48; | 8 const _zero = 48; |
| 9 const _upperCaseA = 65; | 9 const _upperCaseA = 65; |
| 10 const _upperCaseZ = 90; | 10 const _upperCaseZ = 90; |
| 11 const _lowerCaseA = 97; | 11 const _lowerCaseA = 97; |
| 12 const _lowerCaseZ = 122; | 12 const _lowerCaseZ = 122; |
| 13 const _asciiCaseBit = 32; | 13 const _asciiCaseBit = 32; |
| 14 function equalsIgnoreAsciiCase(a, b) { | 14 function equalsIgnoreAsciiCase(a, b) { |
| 15 if (a[dartx.length] != b[dartx.length]) | 15 if (a[dartx.length] != b[dartx.length]) return false; |
| 16 return false; | |
| 17 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { | 16 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { |
| 18 let aChar = a[dartx.codeUnitAt](i); | 17 let aChar = a[dartx.codeUnitAt](i); |
| 19 let bChar = b[dartx.codeUnitAt](i); | 18 let bChar = b[dartx.codeUnitAt](i); |
| 20 if (aChar == bChar) | 19 if (aChar == bChar) continue; |
| 21 continue; | 20 if ((dart.notNull(aChar) ^ dart.notNull(bChar)) != _asciiCaseBit) return f
alse; |
| 22 if ((dart.notNull(aChar) ^ dart.notNull(bChar)) != _asciiCaseBit) | |
| 23 return false; | |
| 24 let aCharUpperCase = dart.notNull(aChar) | dart.notNull(_asciiCaseBit); | 21 let aCharUpperCase = dart.notNull(aChar) | dart.notNull(_asciiCaseBit); |
| 25 if (dart.notNull(_upperCaseA) <= dart.notNull(aCharUpperCase) && dart.notN
ull(aCharUpperCase) <= dart.notNull(_upperCaseZ)) { | 22 if (dart.notNull(_upperCaseA) <= dart.notNull(aCharUpperCase) && dart.notN
ull(aCharUpperCase) <= dart.notNull(_upperCaseZ)) { |
| 26 continue; | 23 continue; |
| 27 } | 24 } |
| 28 return false; | 25 return false; |
| 29 } | 26 } |
| 30 return true; | 27 return true; |
| 31 } | 28 } |
| 32 dart.fn(equalsIgnoreAsciiCase, core.bool, [core.String, core.String]); | 29 dart.fn(equalsIgnoreAsciiCase, core.bool, [core.String, core.String]); |
| 33 function hashIgnoreAsciiCase(string) { | 30 function hashIgnoreAsciiCase(string) { |
| 34 let hash = 0; | 31 let hash = 0; |
| 35 for (let i = 0; dart.notNull(i) < dart.notNull(string[dartx.length]); i = da
rt.notNull(i) + 1) { | 32 for (let i = 0; dart.notNull(i) < dart.notNull(string[dartx.length]); i = da
rt.notNull(i) + 1) { |
| 36 let char = string[dartx.codeUnitAt](i); | 33 let char = string[dartx.codeUnitAt](i); |
| 37 if (dart.notNull(_lowerCaseA) <= dart.notNull(char) && dart.notNull(char)
<= dart.notNull(_lowerCaseZ)) { | 34 if (dart.notNull(_lowerCaseA) <= dart.notNull(char) && dart.notNull(char)
<= dart.notNull(_lowerCaseZ)) { |
| 38 char = dart.notNull(char) - dart.notNull(_asciiCaseBit); | 35 char = dart.notNull(char) - dart.notNull(_asciiCaseBit); |
| 39 } | 36 } |
| 40 hash = 536870911 & dart.notNull(hash) + dart.notNull(char); | 37 hash = 536870911 & dart.notNull(hash) + dart.notNull(char); |
| 41 hash = 536870911 & dart.notNull(hash) + ((524287 & dart.notNull(hash)) <<
10); | 38 hash = 536870911 & dart.notNull(hash) + ((524287 & dart.notNull(hash)) <<
10); |
| 42 hash = dart.notNull(hash) >> 6; | 39 hash = dart.notNull(hash) >> 6; |
| 43 } | 40 } |
| 44 hash = 536870911 & dart.notNull(hash) + ((67108863 & dart.notNull(hash)) <<
3); | 41 hash = 536870911 & dart.notNull(hash) + ((67108863 & dart.notNull(hash)) <<
3); |
| 45 hash = dart.notNull(hash) >> 11; | 42 hash = dart.notNull(hash) >> 11; |
| 46 return 536870911 & dart.notNull(hash) + ((16383 & dart.notNull(hash)) << 15)
; | 43 return 536870911 & dart.notNull(hash) + ((16383 & dart.notNull(hash)) << 15)
; |
| 47 } | 44 } |
| 48 dart.fn(hashIgnoreAsciiCase, core.int, [core.String]); | 45 dart.fn(hashIgnoreAsciiCase, core.int, [core.String]); |
| 49 function compareAsciiUpperCase(a, b) { | 46 function compareAsciiUpperCase(a, b) { |
| 50 let defaultResult = 0; | 47 let defaultResult = 0; |
| 51 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { | 48 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { |
| 52 if (dart.notNull(i) >= dart.notNull(b[dartx.length])) | 49 if (dart.notNull(i) >= dart.notNull(b[dartx.length])) return 1; |
| 53 return 1; | |
| 54 let aChar = a[dartx.codeUnitAt](i); | 50 let aChar = a[dartx.codeUnitAt](i); |
| 55 let bChar = b[dartx.codeUnitAt](i); | 51 let bChar = b[dartx.codeUnitAt](i); |
| 56 if (aChar == bChar) | 52 if (aChar == bChar) continue; |
| 57 continue; | |
| 58 let aUpperCase = aChar; | 53 let aUpperCase = aChar; |
| 59 let bUpperCase = bChar; | 54 let bUpperCase = bChar; |
| 60 if (dart.notNull(_lowerCaseA) <= dart.notNull(aChar) && dart.notNull(aChar
) <= dart.notNull(_lowerCaseZ)) { | 55 if (dart.notNull(_lowerCaseA) <= dart.notNull(aChar) && dart.notNull(aChar
) <= dart.notNull(_lowerCaseZ)) { |
| 61 aUpperCase = dart.notNull(aUpperCase) - dart.notNull(_asciiCaseBit); | 56 aUpperCase = dart.notNull(aUpperCase) - dart.notNull(_asciiCaseBit); |
| 62 } | 57 } |
| 63 if (dart.notNull(_lowerCaseA) <= dart.notNull(bChar) && dart.notNull(bChar
) <= dart.notNull(_lowerCaseZ)) { | 58 if (dart.notNull(_lowerCaseA) <= dart.notNull(bChar) && dart.notNull(bChar
) <= dart.notNull(_lowerCaseZ)) { |
| 64 bUpperCase = dart.notNull(bUpperCase) - dart.notNull(_asciiCaseBit); | 59 bUpperCase = dart.notNull(bUpperCase) - dart.notNull(_asciiCaseBit); |
| 65 } | 60 } |
| 66 if (aUpperCase != bUpperCase) | 61 if (aUpperCase != bUpperCase) return (dart.notNull(aUpperCase) - dart.notN
ull(bUpperCase))[dartx.sign]; |
| 67 return (dart.notNull(aUpperCase) - dart.notNull(bUpperCase))[dartx.sign]
; | 62 if (defaultResult == 0) defaultResult = dart.notNull(aChar) - dart.notNull
(bChar); |
| 68 if (defaultResult == 0) | |
| 69 defaultResult = dart.notNull(aChar) - dart.notNull(bChar); | |
| 70 } | 63 } |
| 71 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) | 64 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) return -1
; |
| 72 return -1; | |
| 73 return defaultResult[dartx.sign]; | 65 return defaultResult[dartx.sign]; |
| 74 } | 66 } |
| 75 dart.fn(compareAsciiUpperCase, core.int, [core.String, core.String]); | 67 dart.fn(compareAsciiUpperCase, core.int, [core.String, core.String]); |
| 76 function compareAsciiLowerCase(a, b) { | 68 function compareAsciiLowerCase(a, b) { |
| 77 let defaultResult = 0; | 69 let defaultResult = 0; |
| 78 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { | 70 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { |
| 79 if (dart.notNull(i) >= dart.notNull(b[dartx.length])) | 71 if (dart.notNull(i) >= dart.notNull(b[dartx.length])) return 1; |
| 80 return 1; | |
| 81 let aChar = a[dartx.codeUnitAt](i); | 72 let aChar = a[dartx.codeUnitAt](i); |
| 82 let bChar = b[dartx.codeUnitAt](i); | 73 let bChar = b[dartx.codeUnitAt](i); |
| 83 if (aChar == bChar) | 74 if (aChar == bChar) continue; |
| 84 continue; | |
| 85 let aLowerCase = aChar; | 75 let aLowerCase = aChar; |
| 86 let bLowerCase = bChar; | 76 let bLowerCase = bChar; |
| 87 if (dart.notNull(_upperCaseA) <= dart.notNull(bChar) && dart.notNull(bChar
) <= dart.notNull(_upperCaseZ)) { | 77 if (dart.notNull(_upperCaseA) <= dart.notNull(bChar) && dart.notNull(bChar
) <= dart.notNull(_upperCaseZ)) { |
| 88 bLowerCase = dart.notNull(bLowerCase) + dart.notNull(_asciiCaseBit); | 78 bLowerCase = dart.notNull(bLowerCase) + dart.notNull(_asciiCaseBit); |
| 89 } | 79 } |
| 90 if (dart.notNull(_upperCaseA) <= dart.notNull(aChar) && dart.notNull(aChar
) <= dart.notNull(_upperCaseZ)) { | 80 if (dart.notNull(_upperCaseA) <= dart.notNull(aChar) && dart.notNull(aChar
) <= dart.notNull(_upperCaseZ)) { |
| 91 aLowerCase = dart.notNull(aLowerCase) + dart.notNull(_asciiCaseBit); | 81 aLowerCase = dart.notNull(aLowerCase) + dart.notNull(_asciiCaseBit); |
| 92 } | 82 } |
| 93 if (aLowerCase != bLowerCase) | 83 if (aLowerCase != bLowerCase) return (dart.notNull(aLowerCase) - dart.notN
ull(bLowerCase))[dartx.sign]; |
| 94 return (dart.notNull(aLowerCase) - dart.notNull(bLowerCase))[dartx.sign]
; | 84 if (defaultResult == 0) defaultResult = dart.notNull(aChar) - dart.notNull
(bChar); |
| 95 if (defaultResult == 0) | |
| 96 defaultResult = dart.notNull(aChar) - dart.notNull(bChar); | |
| 97 } | 85 } |
| 98 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) | 86 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) return -1
; |
| 99 return -1; | |
| 100 return defaultResult[dartx.sign]; | 87 return defaultResult[dartx.sign]; |
| 101 } | 88 } |
| 102 dart.fn(compareAsciiLowerCase, core.int, [core.String, core.String]); | 89 dart.fn(compareAsciiLowerCase, core.int, [core.String, core.String]); |
| 103 function compareNatural(a, b) { | 90 function compareNatural(a, b) { |
| 104 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { | 91 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { |
| 105 if (dart.notNull(i) >= dart.notNull(b[dartx.length])) | 92 if (dart.notNull(i) >= dart.notNull(b[dartx.length])) return 1; |
| 106 return 1; | |
| 107 let aChar = a[dartx.codeUnitAt](i); | 93 let aChar = a[dartx.codeUnitAt](i); |
| 108 let bChar = b[dartx.codeUnitAt](i); | 94 let bChar = b[dartx.codeUnitAt](i); |
| 109 if (aChar != bChar) { | 95 if (aChar != bChar) { |
| 110 return _compareNaturally(a, b, i, aChar, bChar); | 96 return _compareNaturally(a, b, i, aChar, bChar); |
| 111 } | 97 } |
| 112 } | 98 } |
| 113 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) | 99 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) return -1
; |
| 114 return -1; | |
| 115 return 0; | 100 return 0; |
| 116 } | 101 } |
| 117 dart.fn(compareNatural, core.int, [core.String, core.String]); | 102 dart.fn(compareNatural, core.int, [core.String, core.String]); |
| 118 function compareAsciiLowerCaseNatural(a, b) { | 103 function compareAsciiLowerCaseNatural(a, b) { |
| 119 let defaultResult = 0; | 104 let defaultResult = 0; |
| 120 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { | 105 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { |
| 121 if (dart.notNull(i) >= dart.notNull(b[dartx.length])) | 106 if (dart.notNull(i) >= dart.notNull(b[dartx.length])) return 1; |
| 122 return 1; | |
| 123 let aChar = a[dartx.codeUnitAt](i); | 107 let aChar = a[dartx.codeUnitAt](i); |
| 124 let bChar = b[dartx.codeUnitAt](i); | 108 let bChar = b[dartx.codeUnitAt](i); |
| 125 if (aChar == bChar) | 109 if (aChar == bChar) continue; |
| 126 continue; | |
| 127 let aLowerCase = aChar; | 110 let aLowerCase = aChar; |
| 128 let bLowerCase = bChar; | 111 let bLowerCase = bChar; |
| 129 if (dart.notNull(_upperCaseA) <= dart.notNull(aChar) && dart.notNull(aChar
) <= dart.notNull(_upperCaseZ)) { | 112 if (dart.notNull(_upperCaseA) <= dart.notNull(aChar) && dart.notNull(aChar
) <= dart.notNull(_upperCaseZ)) { |
| 130 aLowerCase = dart.notNull(aLowerCase) + dart.notNull(_asciiCaseBit); | 113 aLowerCase = dart.notNull(aLowerCase) + dart.notNull(_asciiCaseBit); |
| 131 } | 114 } |
| 132 if (dart.notNull(_upperCaseA) <= dart.notNull(bChar) && dart.notNull(bChar
) <= dart.notNull(_upperCaseZ)) { | 115 if (dart.notNull(_upperCaseA) <= dart.notNull(bChar) && dart.notNull(bChar
) <= dart.notNull(_upperCaseZ)) { |
| 133 bLowerCase = dart.notNull(bLowerCase) + dart.notNull(_asciiCaseBit); | 116 bLowerCase = dart.notNull(bLowerCase) + dart.notNull(_asciiCaseBit); |
| 134 } | 117 } |
| 135 if (aLowerCase != bLowerCase) { | 118 if (aLowerCase != bLowerCase) { |
| 136 return _compareNaturally(a, b, i, aLowerCase, bLowerCase); | 119 return _compareNaturally(a, b, i, aLowerCase, bLowerCase); |
| 137 } | 120 } |
| 138 if (defaultResult == 0) | 121 if (defaultResult == 0) defaultResult = dart.notNull(aChar) - dart.notNull
(bChar); |
| 139 defaultResult = dart.notNull(aChar) - dart.notNull(bChar); | |
| 140 } | 122 } |
| 141 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) | 123 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) return -1
; |
| 142 return -1; | |
| 143 return defaultResult[dartx.sign]; | 124 return defaultResult[dartx.sign]; |
| 144 } | 125 } |
| 145 dart.fn(compareAsciiLowerCaseNatural, core.int, [core.String, core.String]); | 126 dart.fn(compareAsciiLowerCaseNatural, core.int, [core.String, core.String]); |
| 146 function compareAsciiUpperCaseNatural(a, b) { | 127 function compareAsciiUpperCaseNatural(a, b) { |
| 147 let defaultResult = 0; | 128 let defaultResult = 0; |
| 148 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { | 129 for (let i = 0; dart.notNull(i) < dart.notNull(a[dartx.length]); i = dart.no
tNull(i) + 1) { |
| 149 if (dart.notNull(i) >= dart.notNull(b[dartx.length])) | 130 if (dart.notNull(i) >= dart.notNull(b[dartx.length])) return 1; |
| 150 return 1; | |
| 151 let aChar = a[dartx.codeUnitAt](i); | 131 let aChar = a[dartx.codeUnitAt](i); |
| 152 let bChar = b[dartx.codeUnitAt](i); | 132 let bChar = b[dartx.codeUnitAt](i); |
| 153 if (aChar == bChar) | 133 if (aChar == bChar) continue; |
| 154 continue; | |
| 155 let aUpperCase = aChar; | 134 let aUpperCase = aChar; |
| 156 let bUpperCase = bChar; | 135 let bUpperCase = bChar; |
| 157 if (dart.notNull(_lowerCaseA) <= dart.notNull(aChar) && dart.notNull(aChar
) <= dart.notNull(_lowerCaseZ)) { | 136 if (dart.notNull(_lowerCaseA) <= dart.notNull(aChar) && dart.notNull(aChar
) <= dart.notNull(_lowerCaseZ)) { |
| 158 aUpperCase = dart.notNull(aUpperCase) - dart.notNull(_asciiCaseBit); | 137 aUpperCase = dart.notNull(aUpperCase) - dart.notNull(_asciiCaseBit); |
| 159 } | 138 } |
| 160 if (dart.notNull(_lowerCaseA) <= dart.notNull(bChar) && dart.notNull(bChar
) <= dart.notNull(_lowerCaseZ)) { | 139 if (dart.notNull(_lowerCaseA) <= dart.notNull(bChar) && dart.notNull(bChar
) <= dart.notNull(_lowerCaseZ)) { |
| 161 bUpperCase = dart.notNull(bUpperCase) - dart.notNull(_asciiCaseBit); | 140 bUpperCase = dart.notNull(bUpperCase) - dart.notNull(_asciiCaseBit); |
| 162 } | 141 } |
| 163 if (aUpperCase != bUpperCase) { | 142 if (aUpperCase != bUpperCase) { |
| 164 return _compareNaturally(a, b, i, aUpperCase, bUpperCase); | 143 return _compareNaturally(a, b, i, aUpperCase, bUpperCase); |
| 165 } | 144 } |
| 166 if (defaultResult == 0) | 145 if (defaultResult == 0) defaultResult = dart.notNull(aChar) - dart.notNull
(bChar); |
| 167 defaultResult = dart.notNull(aChar) - dart.notNull(bChar); | |
| 168 } | 146 } |
| 169 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) | 147 if (dart.notNull(b[dartx.length]) > dart.notNull(a[dartx.length])) return -1
; |
| 170 return -1; | |
| 171 return defaultResult[dartx.sign]; | 148 return defaultResult[dartx.sign]; |
| 172 } | 149 } |
| 173 dart.fn(compareAsciiUpperCaseNatural, core.int, [core.String, core.String]); | 150 dart.fn(compareAsciiUpperCaseNatural, core.int, [core.String, core.String]); |
| 174 function _compareNaturally(a, b, index, aChar, bChar) { | 151 function _compareNaturally(a, b, index, aChar, bChar) { |
| 175 dart.assert(aChar != bChar); | 152 dart.assert(aChar != bChar); |
| 176 let aIsDigit = _isDigit(aChar); | 153 let aIsDigit = _isDigit(aChar); |
| 177 let bIsDigit = _isDigit(bChar); | 154 let bIsDigit = _isDigit(bChar); |
| 178 if (dart.notNull(aIsDigit)) { | 155 if (dart.notNull(aIsDigit)) { |
| 179 if (dart.notNull(bIsDigit)) { | 156 if (dart.notNull(bIsDigit)) { |
| 180 return _compareNumerically(a, b, aChar, bChar, index); | 157 return _compareNumerically(a, b, aChar, bChar, index); |
| 181 } else if (dart.notNull(index) > 0 && dart.notNull(_isDigit(a[dartx.codeUn
itAt](dart.notNull(index) - 1)))) { | 158 } else if (dart.notNull(index) > 0 && dart.notNull(_isDigit(a[dartx.codeUn
itAt](dart.notNull(index) - 1)))) { |
| 182 return 1; | 159 return 1; |
| 183 } | 160 } |
| 184 } else if (dart.notNull(bIsDigit) && dart.notNull(index) > 0 && dart.notNull
(_isDigit(b[dartx.codeUnitAt](dart.notNull(index) - 1)))) { | 161 } else if (dart.notNull(bIsDigit) && dart.notNull(index) > 0 && dart.notNull
(_isDigit(b[dartx.codeUnitAt](dart.notNull(index) - 1)))) { |
| 185 return -1; | 162 return -1; |
| 186 } | 163 } |
| 187 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign]; | 164 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign]; |
| 188 } | 165 } |
| 189 dart.fn(_compareNaturally, core.int, [core.String, core.String, core.int, core
.int, core.int]); | 166 dart.fn(_compareNaturally, core.int, [core.String, core.String, core.int, core
.int, core.int]); |
| 190 function _compareNumerically(a, b, aChar, bChar, index) { | 167 function _compareNumerically(a, b, aChar, bChar, index) { |
| 191 if (dart.notNull(_isNonZeroNumberSuffix(a, index))) { | 168 if (dart.notNull(_isNonZeroNumberSuffix(a, index))) { |
| 192 let result = _compareDigitCount(a, b, index, index); | 169 let result = _compareDigitCount(a, b, index, index); |
| 193 if (result != 0) | 170 if (result != 0) return result; |
| 194 return result; | |
| 195 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign]; | 171 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign]; |
| 196 } | 172 } |
| 197 let aIndex = index; | 173 let aIndex = index; |
| 198 let bIndex = index; | 174 let bIndex = index; |
| 199 if (aChar == _zero) { | 175 if (aChar == _zero) { |
| 200 do { | 176 do { |
| 201 aIndex = dart.notNull(aIndex) + 1; | 177 aIndex = dart.notNull(aIndex) + 1; |
| 202 if (aIndex == a[dartx.length]) | 178 if (aIndex == a[dartx.length]) return -1; |
| 203 return -1; | |
| 204 aChar = a[dartx.codeUnitAt](aIndex); | 179 aChar = a[dartx.codeUnitAt](aIndex); |
| 205 } while (aChar == _zero); | 180 } while (aChar == _zero); |
| 206 if (!dart.notNull(_isDigit(aChar))) | 181 if (!dart.notNull(_isDigit(aChar))) return -1; |
| 207 return -1; | |
| 208 } else if (bChar == _zero) { | 182 } else if (bChar == _zero) { |
| 209 do { | 183 do { |
| 210 bIndex = dart.notNull(bIndex) + 1; | 184 bIndex = dart.notNull(bIndex) + 1; |
| 211 if (bIndex == b[dartx.length]) | 185 if (bIndex == b[dartx.length]) return 1; |
| 212 return 1; | |
| 213 bChar = b[dartx.codeUnitAt](bIndex); | 186 bChar = b[dartx.codeUnitAt](bIndex); |
| 214 } while (bChar == _zero); | 187 } while (bChar == _zero); |
| 215 if (!dart.notNull(_isDigit(bChar))) | 188 if (!dart.notNull(_isDigit(bChar))) return 1; |
| 216 return 1; | |
| 217 } | 189 } |
| 218 if (aChar != bChar) { | 190 if (aChar != bChar) { |
| 219 let result = _compareDigitCount(a, b, aIndex, bIndex); | 191 let result = _compareDigitCount(a, b, aIndex, bIndex); |
| 220 if (result != 0) | 192 if (result != 0) return result; |
| 221 return result; | |
| 222 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign]; | 193 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign]; |
| 223 } | 194 } |
| 224 while (true) { | 195 while (true) { |
| 225 let aIsDigit = false; | 196 let aIsDigit = false; |
| 226 let bIsDigit = false; | 197 let bIsDigit = false; |
| 227 aChar = 0; | 198 aChar = 0; |
| 228 bChar = 0; | 199 bChar = 0; |
| 229 if ((aIndex = dart.notNull(aIndex) + 1) < dart.notNull(a[dartx.length])) { | 200 if ((aIndex = dart.notNull(aIndex) + 1) < dart.notNull(a[dartx.length])) { |
| 230 aChar = a[dartx.codeUnitAt](aIndex); | 201 aChar = a[dartx.codeUnitAt](aIndex); |
| 231 aIsDigit = _isDigit(aChar); | 202 aIsDigit = _isDigit(aChar); |
| 232 } | 203 } |
| 233 if ((bIndex = dart.notNull(bIndex) + 1) < dart.notNull(b[dartx.length])) { | 204 if ((bIndex = dart.notNull(bIndex) + 1) < dart.notNull(b[dartx.length])) { |
| 234 bChar = b[dartx.codeUnitAt](bIndex); | 205 bChar = b[dartx.codeUnitAt](bIndex); |
| 235 bIsDigit = _isDigit(bChar); | 206 bIsDigit = _isDigit(bChar); |
| 236 } | 207 } |
| 237 if (dart.notNull(aIsDigit)) { | 208 if (dart.notNull(aIsDigit)) { |
| 238 if (dart.notNull(bIsDigit)) { | 209 if (dart.notNull(bIsDigit)) { |
| 239 if (aChar == bChar) | 210 if (aChar == bChar) continue; |
| 240 continue; | |
| 241 break; | 211 break; |
| 242 } | 212 } |
| 243 return 1; | 213 return 1; |
| 244 } else if (dart.notNull(bIsDigit)) { | 214 } else if (dart.notNull(bIsDigit)) { |
| 245 return -1; | 215 return -1; |
| 246 } else { | 216 } else { |
| 247 return (dart.notNull(aIndex) - dart.notNull(bIndex))[dartx.sign]; | 217 return (dart.notNull(aIndex) - dart.notNull(bIndex))[dartx.sign]; |
| 248 } | 218 } |
| 249 } | 219 } |
| 250 let result = _compareDigitCount(a, b, aIndex, bIndex); | 220 let result = _compareDigitCount(a, b, aIndex, bIndex); |
| 251 if (result != 0) | 221 if (result != 0) return result; |
| 252 return result; | |
| 253 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign]; | 222 return (dart.notNull(aChar) - dart.notNull(bChar))[dartx.sign]; |
| 254 } | 223 } |
| 255 dart.fn(_compareNumerically, core.int, [core.String, core.String, core.int, co
re.int, core.int]); | 224 dart.fn(_compareNumerically, core.int, [core.String, core.String, core.int, co
re.int, core.int]); |
| 256 function _compareDigitCount(a, b, i, j) { | 225 function _compareDigitCount(a, b, i, j) { |
| 257 while ((i = dart.notNull(i) + 1) < dart.notNull(a[dartx.length])) { | 226 while ((i = dart.notNull(i) + 1) < dart.notNull(a[dartx.length])) { |
| 258 let aIsDigit = _isDigit(a[dartx.codeUnitAt](i)); | 227 let aIsDigit = _isDigit(a[dartx.codeUnitAt](i)); |
| 259 if ((j = dart.notNull(j) + 1) == b[dartx.length]) | 228 if ((j = dart.notNull(j) + 1) == b[dartx.length]) return dart.notNull(aIsD
igit) ? 1 : 0; |
| 260 return dart.notNull(aIsDigit) ? 1 : 0; | |
| 261 let bIsDigit = _isDigit(b[dartx.codeUnitAt](j)); | 229 let bIsDigit = _isDigit(b[dartx.codeUnitAt](j)); |
| 262 if (dart.notNull(aIsDigit)) { | 230 if (dart.notNull(aIsDigit)) { |
| 263 if (dart.notNull(bIsDigit)) | 231 if (dart.notNull(bIsDigit)) continue; |
| 264 continue; | |
| 265 return 1; | 232 return 1; |
| 266 } else if (dart.notNull(bIsDigit)) { | 233 } else if (dart.notNull(bIsDigit)) { |
| 267 return -1; | 234 return -1; |
| 268 } else { | 235 } else { |
| 269 return 0; | 236 return 0; |
| 270 } | 237 } |
| 271 } | 238 } |
| 272 if ((j = dart.notNull(j) + 1) < dart.notNull(b[dartx.length]) && dart.notNul
l(_isDigit(b[dartx.codeUnitAt](j)))) { | 239 if ((j = dart.notNull(j) + 1) < dart.notNull(b[dartx.length]) && dart.notNul
l(_isDigit(b[dartx.codeUnitAt](j)))) { |
| 273 return -1; | 240 return -1; |
| 274 } | 241 } |
| 275 return 0; | 242 return 0; |
| 276 } | 243 } |
| 277 dart.fn(_compareDigitCount, core.int, [core.String, core.String, core.int, cor
e.int]); | 244 dart.fn(_compareDigitCount, core.int, [core.String, core.String, core.int, cor
e.int]); |
| 278 function _isDigit(charCode) { | 245 function _isDigit(charCode) { |
| 279 return (dart.notNull(charCode) ^ dart.notNull(_zero)) <= 9; | 246 return (dart.notNull(charCode) ^ dart.notNull(_zero)) <= 9; |
| 280 } | 247 } |
| 281 dart.fn(_isDigit, core.bool, [core.int]); | 248 dart.fn(_isDigit, core.bool, [core.int]); |
| 282 function _isNonZeroNumberSuffix(string, index) { | 249 function _isNonZeroNumberSuffix(string, index) { |
| 283 while ((index = dart.notNull(index) - 1) >= 0) { | 250 while ((index = dart.notNull(index) - 1) >= 0) { |
| 284 let char = string[dartx.codeUnitAt](index); | 251 let char = string[dartx.codeUnitAt](index); |
| 285 if (char != _zero) | 252 if (char != _zero) return _isDigit(char); |
| 286 return _isDigit(char); | |
| 287 } | 253 } |
| 288 return false; | 254 return false; |
| 289 } | 255 } |
| 290 dart.fn(_isNonZeroNumberSuffix, core.bool, [core.String, core.int]); | 256 dart.fn(_isNonZeroNumberSuffix, core.bool, [core.String, core.int]); |
| 291 // Exports: | 257 // Exports: |
| 292 exports.equalsIgnoreAsciiCase = equalsIgnoreAsciiCase; | 258 exports.equalsIgnoreAsciiCase = equalsIgnoreAsciiCase; |
| 293 exports.hashIgnoreAsciiCase = hashIgnoreAsciiCase; | 259 exports.hashIgnoreAsciiCase = hashIgnoreAsciiCase; |
| 294 exports.compareAsciiUpperCase = compareAsciiUpperCase; | 260 exports.compareAsciiUpperCase = compareAsciiUpperCase; |
| 295 exports.compareAsciiLowerCase = compareAsciiLowerCase; | 261 exports.compareAsciiLowerCase = compareAsciiLowerCase; |
| 296 exports.compareNatural = compareNatural; | 262 exports.compareNatural = compareNatural; |
| 297 exports.compareAsciiLowerCaseNatural = compareAsciiLowerCaseNatural; | 263 exports.compareAsciiLowerCaseNatural = compareAsciiLowerCaseNatural; |
| 298 exports.compareAsciiUpperCaseNatural = compareAsciiUpperCaseNatural; | 264 exports.compareAsciiUpperCaseNatural = compareAsciiUpperCaseNatural; |
| 299 }); | 265 }); |
| OLD | NEW |