Skip to content

Commit

Permalink
Adapted the website search for better matching
Browse files Browse the repository at this point in the history
* Formatting
  • Loading branch information
xFrednet committed Dec 19, 2020
1 parent 73feb31 commit 2814ee4
Showing 1 changed file with 41 additions and 1 deletion.
42 changes: 41 additions & 1 deletion util/gh-pages/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ <h1>ALL the Clippy Lints</h1>
</div>

<article class="panel panel-default" id="{{lint.id}}"
ng-repeat="lint in data | filter:byLevels | filter:byGroups | filter:search | orderBy:'id' track by lint.id" on-finish-render="ngRepeatFinished">
ng-repeat="lint in data | filter:byLevels | filter:byGroups | filter:bySearch | orderBy:'id' track by lint.id">
<header class="panel-heading" ng-click="open[lint.id] = !open[lint.id]">
<h2 class="panel-title">
<div class="panel-title-name">
Expand Down Expand Up @@ -215,6 +215,46 @@ <h4 class="list-group-item-heading">
return $scope.groups[lint.group];
};

$scope.bySearch = function (lint, index, array) {
let search_str = $scope.search;
// It can be `null` I haven't missed this value
if (search_str == null || search_str.length == 0) {
return true;
}
search_str = search_str.toLowerCase();

// Search by id
let id_search = search_str.trim().replace(/(\-| )/g, "_");
if (lint.id.includes(id_search)) {
return true;
}

// Search the description
// The use of `for`-loops instead of `foreach` enables us to return early
let search_lint = (lint, therm) => {
for (const field in lint.docs) {
// Continue if it's not a property
if (!lint.docs.hasOwnProperty(field)) {
continue;
}

// Return if not found
if (lint.docs[field].toLowerCase().includes(therm)) {
return true;
}
}
return false;
};
let therms = search_str.split(" ");
for (index = 0; index < therms.length; index++) {
if (!search_lint(lint, therms[index])) {
return false;
}
}

return true;
}

// Get data
$scope.open = {};
$scope.loading = true;
Expand Down

0 comments on commit 2814ee4

Please sign in to comment.