From 8f14331aeaf8dc17cc0c3463e52d98988e9c0b9a Mon Sep 17 00:00:00 2001 From: Koen Punt Date: Fri, 16 Sep 2016 22:24:43 +0200 Subject: [PATCH] update regex for highlighting fixes #2623 --- coffee/lib/abstract-chosen.coffee | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/coffee/lib/abstract-chosen.coffee b/coffee/lib/abstract-chosen.coffee index ee89e60fdf4..8b2a201bddd 100644 --- a/coffee/lib/abstract-chosen.coffee +++ b/coffee/lib/abstract-chosen.coffee @@ -157,8 +157,8 @@ class AbstractChosen searchText = this.get_search_text() escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") - zregex = new RegExp(escapedSearchText, 'i') regex = this.get_search_regex(escapedSearchText) + highlightRegex = this.get_highlight_regex(escapedSearchText) for option in @results_data @@ -184,7 +184,7 @@ class AbstractChosen if option.search_match if searchText.length - startpos = option.search_text.search zregex + startpos = option.search_text.search highlightRegex text = option.search_text.substr(0, startpos + searchText.length) + '' + option.search_text.substr(startpos + searchText.length) option.search_text = text.substr(0, startpos) + '' + text.substr(startpos) @@ -207,6 +207,11 @@ class AbstractChosen regex_flag = if @case_sensitive_search then "" else "i" new RegExp(regex_anchor + escaped_search_string, regex_flag) + get_highlight_regex: (escaped_search_string) -> + regex_anchor = if @search_contains then "" else "\\b" + regex_flag = if @case_sensitive_search then "" else "i" + new RegExp(regex_anchor + escaped_search_string, regex_flag) + search_string_match: (search_string, regex) -> if regex.test search_string return true