aboutsummaryrefslogtreecommitdiffstats
path: root/background_scripts/completion.coffee
diff options
context:
space:
mode:
authorStephen Blott2015-03-29 10:44:57 +0100
committerStephen Blott2015-03-29 10:44:57 +0100
commitbfa8eb3ee2985064895e3bb7b92f135399c403af (patch)
tree9e45f646c7f5c5eaafad6a0f495eff35cc92a574 /background_scripts/completion.coffee
parent43c59c238bb1b141c9664e7902a275814cc46258 (diff)
downloadvimium-bfa8eb3ee2985064895e3bb7b92f135399c403af.tar.bz2
Move the search-engine logic out of settings.coffee.
This logic should never have been in settings.coffee. This moves it to completion.coffee, where it belongs.
Diffstat (limited to 'background_scripts/completion.coffee')
-rw-r--r--background_scripts/completion.coffee24
1 files changed, 23 insertions, 1 deletions
diff --git a/background_scripts/completion.coffee b/background_scripts/completion.coffee
index 177892fb..d9c7ef8b 100644
--- a/background_scripts/completion.coffee
+++ b/background_scripts/completion.coffee
@@ -344,11 +344,33 @@ class SearchEngineCompleter
computeRelevancy: -> 1
refresh: ->
- this.searchEngines = root.Settings.getSearchEngines()
+ @searchEngines = SearchEngineCompleter.getSearchEngines()
getSearchEngineMatches: (queryTerms) ->
(1 < queryTerms.length and @searchEngines[queryTerms[0]]) or {}
+ # Static data and methods for parsing the configured search engines. We keep a cache of the search-engine
+ # mapping in @searchEnginesMap.
+ @searchEnginesMap: null
+
+ # Parse the custom search engines setting and cache it in SearchEngineCompleter.searchEnginesMap.
+ @parseSearchEngines: (searchEnginesText) ->
+ searchEnginesMap = SearchEngineCompleter.searchEnginesMap = {}
+ for line in searchEnginesText.split /\n/
+ tokens = line.trim().split /\s+/
+ continue if tokens.length < 2 or tokens[0].startsWith('"') or tokens[0].startsWith("#")
+ keywords = tokens[0].split ":"
+ continue unless keywords.length == 2 and not keywords[1] # So, like: [ "w", "" ].
+ searchEnginesMap[keywords[0]] =
+ url: tokens[1]
+ description: tokens[2..].join(" ")
+
+ # Fetch the search-engine map, building it if necessary.
+ @getSearchEngines: ->
+ unless SearchEngineCompleter.searchEnginesMap?
+ SearchEngineCompleter.parseSearchEngines Settings.get "searchEngines"
+ SearchEngineCompleter.searchEnginesMap
+
# A completer which calls filter() on many completers, aggregates the results, ranks them, and returns the top
# 10. Queries from the vomnibar frontend script come through a multi completer.
class MultiCompleter