From c8ca94bd83bb1a651cd4efdaef41906f46004ee5 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Fri, 8 Apr 2016 15:07:04 +0100 Subject: Trim linkText when it's collected, not repreatedly. There's no need to repeatedly trim linkText. Instead, just trim it when it's first collected, then we can assume from there on that it's trimmed. --- content_scripts/link_hints.coffee | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'content_scripts') diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee index 3cbda59f..08c5cd9b 100644 --- a/content_scripts/link_hints.coffee +++ b/content_scripts/link_hints.coffee @@ -476,12 +476,13 @@ class FilterHints # Filter link hints by search string, renumbering the hints as necessary. filterLinkHints: (hintMarkers) -> scoreFunction = @scoreLinkHint @linkTextKeystrokeQueue.join "" - matchingHintMarkers = hintMarkers - .filter (linkMarker) -> - linkMarker.score = scoreFunction linkMarker - 0 < linkMarker.score - .sort (a, b) -> - if b.score == a.score then b.stableSortCount - a.stableSortCount else b.score - a.score + matchingHintMarkers = + hintMarkers + .filter (linkMarker) -> + linkMarker.score = scoreFunction linkMarker + 0 < linkMarker.score + .sort (a, b) -> + if b.score == a.score then b.stableSortCount - a.stableSortCount else b.score - a.score if matchingHintMarkers.length == 0 and @hintKeystrokeQueue.length == 0 and 0 < @linkTextKeystrokeQueue.length # We don't accept typed text which doesn't match any hints. @@ -499,8 +500,7 @@ class FilterHints scoreLinkHint: (linkSearchString) -> searchWords = linkSearchString.trim().toLowerCase().split @splitRegexp (linkMarker) => - text = linkMarker.linkText.trim() - linkWords = linkMarker.linkWords ?= text.toLowerCase().split @splitRegexp + linkWords = linkMarker.linkWords ?= linkMarker.linkText.toLowerCase().split @splitRegexp searchWordScores = for searchWord in searchWords @@ -522,8 +522,8 @@ class FilterHints addFunc = (a,b) -> a + b score = searchWordScores.reduce addFunc, 0 # Prefer matches in shorter texts. To keep things balanced for links without any text, we just weight - # them as if their length was 50. - score / Math.log 1 + (text.length || 50) + # them as if their length was 100 (so, quite long). + score / Math.log 1 + (linkMarker.linkText.length || 100) # # Make each hint character a span, so that we can highlight the typed characters as you type them. @@ -761,9 +761,9 @@ LocalHints = linkText = hint.reason showLinkText = true else - linkText = (element.textContent.trim() || element.innerHTML.trim())[...512] + linkText = element.textContent[...256] || element.innerHTML[...256] - {linkText, showLinkText} + {linkText: linkText.trim(), showLinkText} # Suppress all keyboard events until the user stops typing for sufficiently long. class TypingProtector extends Mode -- cgit v1.2.3