@@ -77,7 +77,7 @@ <h1>ALL the Clippy Lints</h1>
7777 < div class ="col-md-12 form-horizontal ">
7878 < div class ="input-group ">
7979 < 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} " />
8181 < span class ="input-group-btn ">
8282 < button class ="btn btn-default " type ="button " ng-click ="search = '' ">
8383 Clear
@@ -119,6 +119,7 @@ <h4 class="list-group-item-heading">
119119 {{title}}
120120 </ h4 >
121121 < 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 >
122123 </ li >
123124 </ ul >
124125 </ article >
@@ -180,6 +181,22 @@ <h4 class="list-group-item-heading">
180181 }
181182 }
182183
184+ function searchLint ( lint , therm ) {
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 ( therm ) !== - 1 ) {
193+ return true ;
194+ }
195+ }
196+
197+ return false ;
198+ }
199+
183200 angular . module ( "clippy" , [ ] )
184201 . filter ( 'markdown' , function ( $sce ) {
185202 return function ( text ) {
@@ -216,40 +233,31 @@ <h4 class="list-group-item-heading">
216233 } ;
217234
218235 $scope . bySearch = function ( lint , index , array ) {
219- let search_str = $scope . search ;
236+ let searchStr = $scope . search ;
220237 // 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 ) {
222239 return true ;
223240 }
224- search_str = search_str . toLowerCase ( ) ;
241+ searchStr = searchStr . toLowerCase ( ) ;
225242
226243 // 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 ) {
229245 return true ;
230246 }
231247
232248 // Search the description
233249 // 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- }
245- }
246- return false ;
247- } ;
248- let therms = search_str . split ( " " ) ;
250+ let therms = searchStr . split ( " " ) ;
249251 for ( index = 0 ; index < therms . length ; index ++ ) {
250- if ( ! search_lint ( lint , therms [ index ] ) ) {
251- return false ;
252+ if ( lint . id . indexOf ( therms [ index ] ) !== - 1 ) {
253+ continue ;
252254 }
255+
256+ if ( searchLint ( lint , therms [ index ] ) ) {
257+ continue ;
258+ }
259+
260+ return false ;
253261 }
254262
255263 return true ;
0 commit comments