aboutsummaryrefslogtreecommitdiffstats
path: root/background_scripts/settings.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'background_scripts/settings.coffee')
-rw-r--r--background_scripts/settings.coffee16
1 files changed, 11 insertions, 5 deletions
diff --git a/background_scripts/settings.coffee b/background_scripts/settings.coffee
index e90bc1f8..3ff74749 100644
--- a/background_scripts/settings.coffee
+++ b/background_scripts/settings.coffee
@@ -46,13 +46,19 @@ root.Settings = Settings =
# this is a map that we use to store our search engines for use.
searchEnginesMap: {}
- # this parses the search engines settings and clears the old searchEngines and sets the new one
+ # Parse the custom search engines setting and cache it.
parseSearchEngines: (searchEnginesText) ->
@searchEnginesMap = {}
- # find the split pairs by first splitting by line then splitting on the first `: `
- split_pairs = ( pair.split( /: (.+)/, 2) for pair in searchEnginesText.split( /\n/ ) when pair[0] != "#" )
- @searchEnginesMap[a[0]] = a[1] for a in split_pairs
- @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: ->
this.parseSearchEngines(@get("searchEngines") || "") if Object.keys(@searchEnginesMap).length == 0
@searchEnginesMap