diff options
| author | Stephen Blott | 2012-11-04 07:56:56 +0000 |
|---|---|---|
| committer | Stephen Blott | 2012-11-04 07:56:56 +0000 |
| commit | e97990e479989bd05f9d6377cfb327fccdcc1ed9 (patch) | |
| tree | 7d6bde7e2bc82310785fea8506897dcad6afa6e4 /background_scripts/completion.coffee | |
| parent | c0b317a62ae4552d6be32ab066f2514d1fd683eb (diff) | |
| download | vimium-e97990e479989bd05f9d6377cfb327fccdcc1ed9.tar.bz2 | |
Generalise RegexpCache, refactor, add tests.
This is a no-op, currently. It's just setting up the RegexpCache
interface for subsequent development.
Diffstat (limited to 'background_scripts/completion.coffee')
| -rw-r--r-- | background_scripts/completion.coffee | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/background_scripts/completion.coffee b/background_scripts/completion.coffee index 9e12d497..9314d9be 100644 --- a/background_scripts/completion.coffee +++ b/background_scripts/completion.coffee @@ -307,12 +307,16 @@ RegexpCache = clear: -> @cache = {} - get: (string) -> + # Get rexexp for string from cache, creating the regexp if necessary. + # Regexp meta-characters in string are escaped. + # Regexp is wrapped in prefix/suffix, which may contain meta-characters. + get: (string, prefix="", suffix="") -> @init() unless @initialized - @cache[string] ||= @escapeRegexp(string) - - # Creates a Regexp from the given string, with all special Regexp characters escaped. - escapeRegexp: (string) -> new RegExp(string.replace(@escapeRegExp, "\\$&"), "i") + regexpString = string.replace(@escapeRegExp, "\\$&") + # Avoid cost of constructing new strings if prefix/suffix are empty (which is expected to be a common case). + regexpString = prefix + regexpString if prefix + regexpString = regexpString + suffix if suffix + @cache[regexpString] ||= new RegExp(regexpString, "i") # Provides cached access to Chrome's history. As the user browses to new pages, we add those pages to this # history cache. @@ -382,3 +386,4 @@ root.DomainCompleter = DomainCompleter root.TabCompleter = TabCompleter root.HistoryCache = HistoryCache root.RankingUtils = RankingUtils +root.RegexpCache = RegexpCache |
