From: Brion Vibber Date: Tue, 16 Aug 2011 22:42:57 +0000 (+0000) Subject: Fix a regression in search highlighting from r90092 X-Git-Tag: 1.31.0-rc.0~28219 X-Git-Url: http://git.cyclocoop.org/%24image?a=commitdiff_plain;h=596a2584b0ea7ca5de24e871e015a9ac03122c3e;p=lhc%2Fweb%2Fwiklou.git Fix a regression in search highlighting from r90092 Followup on r94609, r94681 test cases. This fixes the test case with a period that was failing; problem was not the period, but the space before. The changed regex in r90092 ended up including the preceding whitespace in the match, so the position of the match was coming up one character before the actual word -- thus offsetting the highlight by one char. Changed from search to match, using the regex's index property (same as search returns) and adding in the length of the first match component which covers the space/whatever --- diff --git a/resources/jquery/jquery.highlightText.js b/resources/jquery/jquery.highlightText.js index 4bc231c233..44ac56e145 100644 --- a/resources/jquery/jquery.highlightText.js +++ b/resources/jquery/jquery.highlightText.js @@ -24,8 +24,9 @@ $.highlightText = { // non latin characters can make regex think a new word has begun: do not use \b // http://stackoverflow.com/questions/3787072/regex-wordwrap-with-utf8-characters-in-js // look for an occurence of our pattern and store the starting position - var pos = node.data.search( new RegExp( "(^|\\s)" + $.escapeRE( pat ), "i" ) ); - if ( pos >= 0 ) { + var match = node.data.match( new RegExp( "(^|\\s)" + $.escapeRE( pat ), "i" ) ); + if ( match ) { + var pos = match.index + match[1].length; // include length of any matched spaces // create the span wrapper for the matched text var spannode = document.createElement( 'span' ); spannode.className = 'highlight';