diff options
| author | Stephen Blott | 2014-12-29 15:16:46 +0000 |
|---|---|---|
| committer | Stephen Blott | 2014-12-29 15:16:46 +0000 |
| commit | ba743054dcd26b225db407db261e480ab485e2d0 (patch) | |
| tree | 60eb4400ee55a42fa9b3fecd60ab0893c62d3b53 | |
| parent | 25473c3dea3d847d36bda9c56a190dd3b0e5a43f (diff) | |
| parent | 5c750bb10104aeef8fff6131e24b2889619c3ab7 (diff) | |
| download | vimium-ba743054dcd26b225db407db261e480ab485e2d0.tar.bz2 | |
Merge pull request #1384 from smblott-github/fix-search-custom-search-engine-support
Uniform treatment of search queries
| -rw-r--r-- | background_scripts/completion.coffee | 2 | ||||
| -rw-r--r-- | lib/utils.coffee | 12 | ||||
| -rw-r--r-- | tests/unit_tests/utils_test.coffee | 3 |
3 files changed, 12 insertions, 5 deletions
diff --git a/background_scripts/completion.coffee b/background_scripts/completion.coffee index dc5519d5..d62f82fe 100644 --- a/background_scripts/completion.coffee +++ b/background_scripts/completion.coffee @@ -327,7 +327,7 @@ class SearchEngineCompleter searchEngineMatch = this.getSearchEngineMatches(queryTerms[0]) suggestions = [] if searchEngineMatch - searchEngineMatch = searchEngineMatch.replace(/%s/g, queryTerms[1..].join(" ")) + searchEngineMatch = searchEngineMatch.replace(/%s/g, Utils.createSearchQuery queryTerms[1..]) suggestion = new Suggestion(queryTerms, "search", searchEngineMatch, queryTerms[0] + ": " + queryTerms[1..].join(" "), @computeRelevancy) suggestions.push(suggestion) onComplete(suggestions) diff --git a/lib/utils.coffee b/lib/utils.coffee index b7f8731a..1bedb3d1 100644 --- a/lib/utils.coffee +++ b/lib/utils.coffee @@ -88,11 +88,17 @@ Utils = # Fallback: no URL return false + # Map a search query to its URL encoded form. The query may be either a string or an array of strings. + # E.g. "BBC Sport" -> "BBC+Sport". + createSearchQuery: (query) -> + query = query.split(/\s+/) if typeof(query) == "string" + query.map(encodeURIComponent).join "+" + # Creates a search URL from the given :query. createSearchUrl: (query) -> - # it would be better to pull the default search engine from chrome itself, - # but it is not clear if/how that is possible - Settings.get("searchUrl") + encodeURIComponent(query) + # It would be better to pull the default search engine from chrome itself. However, unfortunately chrome + # does not provide an API for doing so. + Settings.get("searchUrl") + @createSearchQuery query # Converts :string into a Google search if it's not already a URL. We don't bother with escaping characters # as Chrome will do that for us. diff --git a/tests/unit_tests/utils_test.coffee b/tests/unit_tests/utils_test.coffee index 556f5b7a..88e9a15b 100644 --- a/tests/unit_tests/utils_test.coffee +++ b/tests/unit_tests/utils_test.coffee @@ -45,7 +45,8 @@ context "convertToUrl", should "convert non-URL terms into search queries", -> assert.equal "http://www.google.com/search?q=google", Utils.convertToUrl("google") - assert.equal "http://www.google.com/search?q=go%20ogle.com", Utils.convertToUrl("go ogle.com") + assert.equal "http://www.google.com/search?q=go+ogle.com", Utils.convertToUrl("go ogle.com") + assert.equal "http://www.google.com/search?q=%40twitter", Utils.convertToUrl("@twitter") context "hasChromePrefix", should "detect chrome prefixes of URLs", -> |
