diff --git a/html/layout.rs b/html/layout.rs index 18f8ce3..51dc8c6 100644 --- a/html/layout.rs +++ b/html/layout.rs @@ -113,8 +113,8 @@ r##"

Accepted types are: fn, mod, struct, enum, - trait, typedef (or - tdef). + trait, type, macro, + and const.

diff --git a/html/static/main.js b/html/static/main.js index 1d2cc38..f135189 100644 --- a/html/static/main.js +++ b/html/static/main.js @@ -230,6 +230,28 @@ } } + function typePassesFilter(filter, type) { + // No filter + if (filter < 0) return true; + + // Exact match + if (filter === type) return true; + + // Match related items + var name = itemTypes[type]; + switch (itemTypes[filter]) { + case "constant": + return (name == "associatedconstant"); + case "fn": + return (name == "method" || name == "tymethod"); + case "type": + return (name == "primitive"); + } + + // No match + return false; + } + // quoted values mean literal search var nSearchWords = searchWords.length; if ((val.charAt(0) === "\"" || val.charAt(0) === "'") && @@ -239,7 +261,7 @@ for (var i = 0; i < nSearchWords; ++i) { if (searchWords[i] === val) { // filter type: ... queries - if (typeFilter < 0 || typeFilter === searchIndex[i].ty) { + if (typePassesFilter(typeFilter, searchIndex[i].ty)) { results.push({id: i, index: -1}); } } @@ -285,7 +307,7 @@ searchWords[j].replace(/_/g, "").indexOf(val) > -1) { // filter type: ... queries - if (typeFilter < 0 || typeFilter === searchIndex[j].ty) { + if (typePassesFilter(typeFilter, searchIndex[j].ty)) { results.push({ id: j, index: searchWords[j].replace(/_/g, "").indexOf(val), @@ -295,7 +317,7 @@ } else if ( (lev_distance = levenshtein(searchWords[j], val)) <= MAX_LEV_DISTANCE) { - if (typeFilter < 0 || typeFilter === searchIndex[j].ty) { + if (typePassesFilter(typeFilter, searchIndex[j].ty)) { results.push({ id: j, index: 0, @@ -451,11 +473,9 @@ var matches, type, query, raw = $('.search-input').val(); query = raw; - matches = query.match(/^(fn|mod|struct|enum|trait|t(ype)?d(ef)?)\s*:\s*/i); + matches = query.match(/^(fn|mod|struct|enum|trait|type|const|macro)\s*:\s*/i); if (matches) { - type = matches[1].replace(/^td$/, 'typedef') - .replace(/^tdef$/, 'typedef') - .replace(/^typed$/, 'typedef'); + type = matches[1].replace(/^const$/, 'constant'); query = query.substring(matches[0].length); }