aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2015-05-27 08:34:15 +0100
committerStephen Blott2015-05-27 08:35:34 +0100
commite27da85676a9d62145ed7ef56e125de2e133ae10 (patch)
tree412fc458e08805a9836d63dcb76f1b7ae2b0a517
parent9b9c26a42bffa88584d44526da5e14a5e546fa07 (diff)
downloadvimium-e27da85676a9d62145ed7ef56e125de2e133ae10.tar.bz2
Custom-only: single-line completions for custom search engines.
-rw-r--r--background_scripts/completion.coffee34
-rw-r--r--tests/unit_tests/completion_test.coffee8
2 files changed, 26 insertions, 16 deletions
diff --git a/background_scripts/completion.coffee b/background_scripts/completion.coffee
index 7a5f37bf..3238f744 100644
--- a/background_scripts/completion.coffee
+++ b/background_scripts/completion.coffee
@@ -41,23 +41,32 @@ class Suggestion
# or @relevancyFunction.
@relevancy ?= @relevancyFunction this
- generateHtml: ->
+ generateHtml: (request) ->
return @html if @html
relevancyHtml = if @showRelevancy then "<span class='relevancy'>#{@computeRelevancy()}</span>" else ""
insertTextClass = if @insertText then "vomnibarInsertText" else "vomnibarNoInsertText"
insertTextIndicator = "&#8618;" # A right hooked arrow.
+ @title = @insertText if @insertText and request.isCustomSearch
# NOTE(philc): We're using these vimium-specific class names so we don't collide with the page's CSS.
@html =
- """
- <div class="vimiumReset vomnibarTopHalf">
- <span class="vimiumReset vomnibarSource #{insertTextClass}">#{insertTextIndicator}</span><span class="vimiumReset vomnibarSource">#{@type}</span>
- <span class="vimiumReset vomnibarTitle">#{@highlightQueryTerms Utils.escapeHtml @title}</span>
- </div>
- <div class="vimiumReset vomnibarBottomHalf">
- <span class="vimiumReset vomnibarSource vomnibarNoInsertText">#{insertTextIndicator}</span><span class="vimiumReset vomnibarUrl">#{@highlightUrlTerms Utils.escapeHtml @shortenUrl()}</span>
- #{relevancyHtml}
- </div>
- """
+ if request.isCustomSearch
+ """
+ <div class="vimiumReset vomnibarTopHalf">
+ <span class="vimiumReset vomnibarSource #{insertTextClass}">#{insertTextIndicator}</span><span class="vimiumReset vomnibarSource">#{@type}</span>
+ <span class="vimiumReset vomnibarTitle">#{@highlightQueryTerms Utils.escapeHtml @title}</span>
+ </div>
+ """
+ else
+ """
+ <div class="vimiumReset vomnibarTopHalf">
+ <span class="vimiumReset vomnibarSource #{insertTextClass}">#{insertTextIndicator}</span><span class="vimiumReset vomnibarSource">#{@type}</span>
+ <span class="vimiumReset vomnibarTitle">#{@highlightQueryTerms Utils.escapeHtml @title}</span>
+ </div>
+ <div class="vimiumReset vomnibarBottomHalf">
+ <span class="vimiumReset vomnibarSource vomnibarNoInsertText">#{insertTextIndicator}</span><span class="vimiumReset vomnibarUrl">#{@highlightUrlTerms Utils.escapeHtml @shortenUrl()}</span>
+ #{relevancyHtml}
+ </div>
+ """
# Use neat trick to snatch a domain (http://stackoverflow.com/a/8498668).
getUrlRoot: (url) ->
@@ -419,6 +428,7 @@ class SearchEngineCompleter
queryTerms: queryTerms[1..]
keyword: keyword
engine: engines[keyword]
+ isCustomSearch: true
refresh: (port) ->
@previousSuggestions = {}
@@ -662,7 +672,7 @@ class MultiCompleter
completer.postProcessSuggestions? request, suggestions for completer in @completers
# Generate HTML for the remaining suggestions and return them.
- suggestion.generateHtml() for suggestion in suggestions
+ suggestion.generateHtml request for suggestion in suggestions
suggestions
# Utilities which help us compute a relevancy score for a given item.
diff --git a/tests/unit_tests/completion_test.coffee b/tests/unit_tests/completion_test.coffee
index 88df0a43..4a0cf746 100644
--- a/tests/unit_tests/completion_test.coffee
+++ b/tests/unit_tests/completion_test.coffee
@@ -244,7 +244,7 @@ context "suggestions",
url: "url"
title: "title <span>"
relevancyFunction: returns 1
- assert.isTrue suggestion.generateHtml().indexOf("title &lt;span&gt;") >= 0
+ assert.isTrue suggestion.generateHtml({}).indexOf("title &lt;span&gt;") >= 0
should "highlight query words", ->
suggestion = new Suggestion
@@ -254,7 +254,7 @@ context "suggestions",
title: "ninjawords"
relevancyFunction: returns 1
expected = "<span class='vomnibarMatch'>ninj</span>a<span class='vomnibarMatch'>words</span>"
- assert.isTrue suggestion.generateHtml().indexOf(expected) >= 0
+ assert.isTrue suggestion.generateHtml({}).indexOf(expected) >= 0
should "highlight query words correctly when whey they overlap", ->
suggestion = new Suggestion
@@ -264,7 +264,7 @@ context "suggestions",
title: "ninjawords"
relevancyFunction: returns 1
expected = "<span class='vomnibarMatch'>ninjaword</span>s"
- assert.isTrue suggestion.generateHtml().indexOf(expected) >= 0
+ assert.isTrue suggestion.generateHtml({}).indexOf(expected) >= 0
should "shorten urls", ->
suggestion = new Suggestion
@@ -273,7 +273,7 @@ context "suggestions",
url: "http://ninjawords.com"
title: "ninjawords"
relevancyFunction: returns 1
- assert.equal -1, suggestion.generateHtml().indexOf("http://ninjawords.com")
+ assert.equal -1, suggestion.generateHtml({}).indexOf("http://ninjawords.com")
context "RankingUtils.wordRelevancy",
should "score higher in shorter URLs", ->