From fd7e142681835e99e6dbd6f856d1e430f1f7e413 Mon Sep 17 00:00:00 2001 From: kkapsner Date: Sat, 21 Dec 2024 22:09:53 +0100 Subject: [PATCH] Added search for setting values and urls For #623 --- lib/search.js | 15 ++++++++++++++- options/options.js | 16 ++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/lib/search.js b/lib/search.js index ab26c41..c2dc485 100644 --- a/lib/search.js +++ b/lib/search.js @@ -14,9 +14,17 @@ const extension = require("./extension"); const texts = []; + const callbacks = []; scope.register = function(text, content){ - texts.push({text: text.toLowerCase(), content}); + switch (typeof text){ + case "function": + callbacks.push({callback: text, content}); + break; + default: + texts.push({text: text.toLowerCase(), content}); + break; + } }; scope.search = function(search){ const resultSets = search.split(/\s+/).filter(function(term){ @@ -38,6 +46,11 @@ matching.add(text.content); } }); + callbacks.forEach(function(callback){ + if (callback.callback(term)){ + matching.add(callback.content); + } + }); } return matching; }); diff --git a/options/options.js b/options/options.js index c47e1b8..c76caf8 100644 --- a/options/options.js +++ b/options/options.js @@ -576,6 +576,22 @@ settingStrings.getStrings(setting).forEach(function(string){ search.register(string, row); }); + if (setting.get){ + search.register(function(term){ + if (term.test(setting.get())){ + return true; + } + if (setting.urlSpecific){ + return setting.urlContainer.get().some(function(urlSetting){ + if (urlSetting.hasOwnProperty(setting.name)){ + return term.test(urlSetting.url) || term.test(urlSetting[setting.name]); + } + return false; + }); + } + return false; + }, row); + } section.addRow(row); setupComputeDependenciesForDisplay(setting, section, row);