diff --git a/html/js/melpa.js b/html/js/melpa.js
index 17beca31..f327023c 100644
--- a/html/js/melpa.js
+++ b/html/js/melpa.js
@@ -21,7 +21,7 @@
})
.then(function (info) {
- var calculateSourceURL = function(name, recipe) {
+ var calculateSourceURL = function(name, recipe) {
if (recipe.fetcher == "github") {
return (/\//.test(recipe.repo) ? "https://github.com/" : "https://gist.github.com/") + recipe.repo;
} else if (recipe.fetcher == "wiki" && !recipe.files) {
@@ -101,12 +101,16 @@
});
$scope.packageMatcher = function(term) {
var t = term && term.toLowerCase();
- var matchp = function(v) {
- return v && v.toLowerCase().indexOf(t) != -1;
+ var searchTextCache = {};
+ var searchText = function(pkg) {
+ var v = searchTextCache[pkg.name];
+ if (!v)
+ v = searchTextCache[pkg.name] = _([pkg.name, pkg.description, pkg.source, pkg.version, pkg.sourceURL]).compact().invoke('toLowerCase').valueOf().join(' ');
+ return v;
};
return function(pkg) {
if (!term || !term.match(/\S/)) return true;
- return matchp(pkg.name) || matchp(pkg.description) || matchp(pkg.source) || matchp(pkg.version) || matchp(pkg.sourceURL);
+ return searchText(pkg).indexOf(t) != -1;
};
};
});