@@ -15,7 +15,8 @@ var highlight = (function(doc) {
1515 tagName : 'strong' ,
1616 className : null ,
1717 wordsOnly : false ,
18- caseSensitive : false
18+ caseSensitive : false ,
19+ diacriticInsensitive : false
1920 } ;
2021
2122 // used for diacritic insensitivity
@@ -61,7 +62,7 @@ var highlight = (function(doc) {
6162 // support wrapping multiple patterns
6263 o . pattern = _ . isArray ( o . pattern ) ? o . pattern : [ o . pattern ] ;
6364
64- regex = getRegex ( o . pattern , o . caseSensitive , o . wordsOnly ) ;
65+ regex = getRegex ( o . pattern , o . caseSensitive , o . wordsOnly , o . diacriticInsensitive ) ;
6566 traverse ( o . node , hightlightTextNode ) ;
6667
6768 function hightlightTextNode ( textNode ) {
@@ -103,13 +104,15 @@ var highlight = (function(doc) {
103104 function accent_replacer ( chr ) {
104105 return accented [ chr . toUpperCase ( ) ] || chr ;
105106 }
106- function getRegex ( patterns , caseSensitive , wordsOnly ) {
107+ function getRegex ( patterns , caseSensitive , wordsOnly , diacriticInsensitive ) {
107108 var escapedPatterns = [ ] , regexStr ;
108109 for ( var i = 0 , len = patterns . length ; i < len ; i ++ ) {
109110 var escapedWord = _ . escapeRegExChars ( patterns [ i ] ) ;
110111 // added for diacritic insensitivity
111- var variantWord = escapedWord . replace ( / \S / g, accent_replacer ) ;
112- escapedPatterns . push ( variantWord ) ;
112+ if ( diacriticInsensitive ) {
113+ var escapedWord = escapedWord . replace ( / \S / g, accent_replacer ) ;
114+ }
115+ escapedPatterns . push ( escapedWord ) ;
113116 }
114117 regexStr = wordsOnly ? "\\b(" + escapedPatterns . join ( "|" ) + ")\\b" : "(" + escapedPatterns . join ( "|" ) + ")" ;
115118 return caseSensitive ? new RegExp ( regexStr ) : new RegExp ( regexStr , "i" ) ;
0 commit comments