|
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