diff options
| author | Stephen Blott | 2015-05-27 08:34:15 +0100 | 
|---|---|---|
| committer | Stephen Blott | 2015-05-27 08:35:34 +0100 | 
| commit | e27da85676a9d62145ed7ef56e125de2e133ae10 (patch) | |
| tree | 412fc458e08805a9836d63dcb76f1b7ae2b0a517 | |
| parent | 9b9c26a42bffa88584d44526da5e14a5e546fa07 (diff) | |
| download | vimium-e27da85676a9d62145ed7ef56e125de2e133ae10.tar.bz2 | |
Custom-only: single-line completions for custom search engines.
| -rw-r--r-- | background_scripts/completion.coffee | 34 | ||||
| -rw-r--r-- | tests/unit_tests/completion_test.coffee | 8 | 
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 = "↪" # 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 <span>") >= 0 +    assert.isTrue suggestion.generateHtml({}).indexOf("title <span>") >= 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", -> | 
