From ae1cf48c53cd42e65279cf2acde1a2860d8a31ee Mon Sep 17 00:00:00 2001 From: Daniel Dada Date: Fri, 27 Jun 2025 14:05:12 +0300 Subject: [PATCH] fix: unicode support in regex --- main.js | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/main.js b/main.js index 0f19d35..55d5190 100644 --- a/main.js +++ b/main.js @@ -60,29 +60,38 @@ function processNodes() { } } - if (activeWords.length > 0) { - const wordMap = new Map(); - for (const word of activeWords) wordMap.set(word.text.toLowerCase(), word); +if (activeWords.length > 0) { + const wordMap = new Map(); + for (const word of activeWords) { + wordMap.set(matchCase ? word.text : word.text.toLowerCase(), word); + } - let flags = matchCase ? 'g' : 'gi'; - let wordsPattern = Array.from(wordMap.keys()).map(escapeRegex).join('|'); - if (matchWhole) { - wordsPattern = `\\b(?:${wordsPattern})\\b`; - } + let flags = matchCase ? 'gu' : 'giu'; + let wordsPattern = Array.from(wordMap.keys()).map(escapeRegex).join('|'); + + if (matchWhole) { + wordsPattern = `(?:(? { - const word = wordMap.get(match.toLowerCase()) || { background: '#ffff00', foreground: '#000000' }; + const lookup = matchCase ? match : match.toLowerCase(); + const word = wordMap.get(lookup) || { background: '#ffff00', foreground: '#000000' }; return `${match}`; }); node.parentNode.replaceChild(span, node); } + } catch (e) { + console.error("Regex error:", e); } +} observer.observe(document.body, { childList: true,