@@ -77,7 +77,7 @@ <h1>ALL the Clippy Lints</h1>
77
77
<div class="col-md-12 form-horizontal">
78
78
<div class="input-group">
79
79
<label class="input-group-addon" id="filter-label" for="filter-input">Filter:</label>
80
- <input type="text" class="form-control" placeholder="Keywords or search string" id="filter-input" ng-model="search" />
80
+ <input type="text" class="form-control" placeholder="Keywords or search string" id="filter-input" ng-model="search" ng-model-options="{debounce: 50}" />
81
81
<span class="input-group-btn">
82
82
<button class="btn btn-default" type="button" ng-click="search = ''">
83
83
Clear
@@ -119,6 +119,7 @@ <h4 class="list-group-item-heading">
119
119
{{title}}
120
120
</h4>
121
121
<div class="list-group-item-text" ng-bind-html="text | markdown"></div>
122
+ <a ng-if="title == 'Known problems'" href="https://github.com/rust-lang/rust-clippy/issues?q=is%3Aissue+is%3Aopen+{{lint.id}}">Search on GitHub</a>
122
123
</li>
123
124
</ul>
124
125
</article>
@@ -180,6 +181,22 @@ <h4 class="list-group-item-heading">
180
181
}
181
182
}
182
183
184
+ function searchLint(lint, term) {
185
+ for (const field in lint.docs) {
186
+ // Continue if it's not a property
187
+ if (!lint.docs.hasOwnProperty(field)) {
188
+ continue;
189
+ }
190
+
191
+ // Return if not found
192
+ if (lint.docs[field].toLowerCase().indexOf(term) !== -1) {
193
+ return true;
194
+ }
195
+ }
196
+
197
+ return false;
198
+ }
199
+
183
200
angular.module("clippy", [])
184
201
.filter('markdown', function ($sce) {
185
202
return function (text) {
@@ -216,40 +233,31 @@ <h4 class="list-group-item-heading">
216
233
};
217
234
218
235
$scope.bySearch = function (lint, index, array) {
219
- let search_str = $scope.search;
236
+ let searchStr = $scope.search;
220
237
// It can be `null` I haven't missed this value
221
- if (search_str == null || search_str .length == 0 ) {
238
+ if (searchStr == null || searchStr .length < 3 ) {
222
239
return true;
223
240
}
224
- search_str = search_str .toLowerCase();
241
+ searchStr = searchStr .toLowerCase();
225
242
226
243
// Search by id
227
- let id_search = search_str.trim().replace(/(\-| )/g, "_");
228
- if (lint.id.includes(id_search)) {
244
+ if (lint.id.indexOf(searchStr.replace("-", "_")) !== -1) {
229
245
return true;
230
246
}
231
247
232
248
// Search the description
233
249
// The use of `for`-loops instead of `foreach` enables us to return early
234
- let search_lint = (lint, therm) => {
235
- for (const field in lint.docs) {
236
- // Continue if it's not a property
237
- if (!lint.docs.hasOwnProperty(field)) {
238
- continue;
239
- }
240
-
241
- // Return if not found
242
- if (lint.docs[field].toLowerCase().includes(therm)) {
243
- return true;
244
- }
250
+ let terms = searchStr.split(" ");
251
+ for (index = 0; index < terms.length; index++) {
252
+ if (lint.id.indexOf(terms[index]) !== -1) {
253
+ continue;
245
254
}
246
- return false;
247
- };
248
- let therms = search_str.split(" ");
249
- for (index = 0; index < therms.length; index++) {
250
- if (!search_lint(lint, therms[index])) {
251
- return false;
255
+
256
+ if (searchLint(lint, terms[index])) {
257
+ continue;
252
258
}
259
+
260
+ return false;
253
261
}
254
262
255
263
return true;
0 commit comments