From ce2809a76e08780955198c11fc63eb990cd575cf Mon Sep 17 00:00:00 2001
From: mrmr1993
Date: Fri, 11 Sep 2015 13:26:31 +0100
Subject: Move escaping regex special chars to its own utility function
---
content_scripts/mode_find.coffee | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
(limited to 'content_scripts')
diff --git a/content_scripts/mode_find.coffee b/content_scripts/mode_find.coffee
index 9b47cfbd..8c4286ae 100644
--- a/content_scripts/mode_find.coffee
+++ b/content_scripts/mode_find.coffee
@@ -132,10 +132,7 @@ class FindMode extends Mode
# show a the number of results. We can grep on document.body.innerText, as it should be indistinguishable
# from the internal representation used by window.find.
else
- # escape all special characters, so RegExp just parses the string 'as is'.
- # Taken from http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
- escapeRegExp = /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g
- parsedNonRegexQuery = @query.parsedQuery.replace(escapeRegExp, (char) -> "\\" + char)
+ parsedNonRegexQuery = Utils.escapeRegexSpecialCharacters @query.parsedQuery
pattern = new RegExp(parsedNonRegexQuery, "g" + (if @query.ignoreCase then "i" else ""))
text = document.body.innerText
@query.matchCount = text.match(pattern)?.length
--
cgit v1.2.3
From 011a6b01fd2d05b5e3fa0181d6b5477e105616ca Mon Sep 17 00:00:00 2001
From: mrmr1993
Date: Fri, 11 Sep 2015 13:50:47 +0100
Subject: Move repeated conditional FindMode code into one place
---
content_scripts/mode_find.coffee | 40 ++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
(limited to 'content_scripts')
diff --git a/content_scripts/mode_find.coffee b/content_scripts/mode_find.coffee
index 8c4286ae..e863b553 100644
--- a/content_scripts/mode_find.coffee
+++ b/content_scripts/mode_find.coffee
@@ -115,27 +115,27 @@ class FindMode extends Mode
# default to 'smartcase' mode, unless noIgnoreCase is explicitly specified
@query.ignoreCase = !hasNoIgnoreCaseFlag && !Utils.hasUpperCase(@query.parsedQuery)
- # if we are dealing with a regex, grep for all matches in the text, and then call window.find() on them
- # sequentially so the browser handles the scrolling / text selection.
- if @query.isRegex
- try
- pattern = new RegExp(@query.parsedQuery, "g" + (if @query.ignoreCase then "i" else ""))
- catch error
- # if we catch a SyntaxError, assume the user is not done typing yet and return quietly
- return
- # innerText will not return the text of hidden elements, and strip out tags while preserving newlines
- text = document.body.innerText
- @query.regexMatches = text.match(pattern)
- @query.activeRegexIndex = 0
- @query.matchCount = @query.regexMatches?.length
- # if we are doing a basic plain string match, we still want to grep for matches of the string, so we can
- # show a the number of results. We can grep on document.body.innerText, as it should be indistinguishable
- # from the internal representation used by window.find.
+ regexPattern = if @query.isRegex
+ @query.parsedQuery
else
- parsedNonRegexQuery = Utils.escapeRegexSpecialCharacters @query.parsedQuery
- pattern = new RegExp(parsedNonRegexQuery, "g" + (if @query.ignoreCase then "i" else ""))
- text = document.body.innerText
- @query.matchCount = text.match(pattern)?.length
+ Utils.escapeRegexSpecialCharacters @query.parsedQuery
+
+ # If we are dealing with a regex, grep for all matches in the text, and then call window.find() on them
+ # sequentially so the browser handles the scrolling / text selection.
+ # If we are doing a basic plain string match, we still want to grep for matches of the string, so we can
+ # show a the number of results.
+ try
+ pattern = new RegExp regexPattern, "g#{if @query.ignoreCase then "i" else ""}"
+ catch error
+ return # If we catch a SyntaxError, assume the user is not done typing yet and return quietly.
+
+ # innerText will not return the text of hidden elements, and strip out tags while preserving newlines.
+ # NOTE(mrmr1993): innerText doesn't include the text contents of s and