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 |