|
137 | 137 | $scope.themes = THEMES_DEFAULT; |
138 | 138 |
|
139 | 139 | const DEFAULT_VERSION_FILTERS = { |
140 | | - "≥": { enabled: false, version_str: "" }, |
141 | | - "≤": { enabled: false, version_str: "" }, |
142 | | - "=": { enabled: false, version_str: "" }, |
| 140 | + "≥": { enabled: false, minor_version: "" }, |
| 141 | + "≤": { enabled: false, minor_version: "" }, |
| 142 | + "=": { enabled: false, minor_version: "" }, |
143 | 143 | }; |
144 | 144 | // Weird workaround to get a copy of the object |
145 | 145 | $scope.version_filters = JSON.parse(JSON.stringify(DEFAULT_VERSION_FILTERS)); |
146 | | - $scope.version_regex = new RegExp('1\.\\d{2}\.\\d'); |
147 | 146 |
|
148 | 147 | $scope.selectTheme = function (theme) { |
149 | 148 | setTheme(theme, true); |
|
181 | 180 |
|
182 | 181 | $scope.byVersion = function(lint) { |
183 | 182 | function validate_version_str(ver) { |
184 | | - return ver.length === 6 && $scope.version_regex.test(ver); |
185 | | - } |
186 | | - |
187 | | - function cmp_version(ver1, ver2, filter) { |
188 | | - // < 0: lint_version < version |
189 | | - // 0: equal |
190 | | - // > 0: lint_version > version |
191 | | - let result = ver1.localeCompare(ver2, undefined, { |
192 | | - numeric: true, |
193 | | - sensitivity: "base" |
194 | | - }); |
195 | | - |
196 | | - // "==" gets the highest priority, since all filters are inclusive |
197 | | - return (result === 0) || (filter === ">=" && result > 0) || (filter === "<=" && result < 0); |
| 183 | + return ver.length === 2 && !isNaN(ver); |
198 | 184 | } |
199 | 185 |
|
200 | 186 | let filters = $scope.version_filters; |
201 | 187 |
|
202 | 188 | // Strip the "pre " prefix for pre 1.29.0 lints |
203 | 189 | let lint_version = lint.version.startsWith("pre ") ? lint.version.substring(4, lint.version.length) : lint.version; |
| 190 | + let lint_minor_verison = lint_version.substring(2, 4); |
204 | 191 |
|
205 | 192 | for (const filter in filters) { |
206 | | - let version_str = filters[filter].version_str; |
| 193 | + let minor_version = filters[filter].minor_version; |
207 | 194 |
|
208 | 195 | // Skip the work for version strings with invalid lengths or characters |
209 | | - if (!validate_version_str(version_str)) { |
| 196 | + if (!validate_version_str(minor_version)) { |
210 | 197 | filters[filter].enabled = false; |
211 | 198 | continue; |
212 | 199 | } |
213 | 200 |
|
214 | 201 | filters[filter].enabled = true; |
215 | 202 |
|
216 | | - let result = cmp_version(lint_version, version_str, filter); |
217 | | - if (result && filter === "==") { |
218 | | - return true; |
219 | | - } else if (!result) { |
| 203 | + let result; |
| 204 | + switch (filter) { |
| 205 | + case "≥": |
| 206 | + result = (lint_minor_verison >= minor_version); |
| 207 | + break; |
| 208 | + case "≤": |
| 209 | + result = (lint_minor_verison <= minor_version); |
| 210 | + break; |
| 211 | + // "=" gets the highest priority, since all filters are inclusive |
| 212 | + case "=": |
| 213 | + return (lint_minor_verison === minor_version); |
| 214 | + default: |
| 215 | + return true |
| 216 | + } |
| 217 | + |
| 218 | + if (!result) { |
220 | 219 | return false; |
221 | 220 | } |
222 | 221 |
|
|
227 | 226 | cmp_filter = "≥"; |
228 | 227 | } |
229 | 228 |
|
230 | | - let cmp_version_str = filters[cmp_filter].version_str; |
231 | | - if (!filters[cmp_filter].enabled || !validate_version_str(cmp_version_str)) { |
| 229 | + let cmp_minor_version = filters[cmp_filter].minor_version; |
| 230 | + if (!filters[cmp_filter].enabled || !validate_version_str(cmp_minor_version)) { |
232 | 231 | return true; |
233 | 232 | } |
234 | 233 |
|
235 | | - return cmp_version(lint_version, cmp_version_str, cmp_filter); |
| 234 | + return (cmp_filter === "≥") ? (lint_minor_verison > minor_version) : (lint_minor_verison < minor_version); |
236 | 235 | } |
237 | 236 |
|
238 | 237 | return true; |
|
0 commit comments