@@ -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