From 91fb1cba385f1122fd65999c71679c74d480050d Mon Sep 17 00:00:00 2001 From: DominikDoom Date: Tue, 25 Apr 2023 14:41:29 +0200 Subject: [PATCH] Fix replacer matching partial words Now checks for end of word / string or tag boundary correctly --- javascript/tagAutocomplete.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/javascript/tagAutocomplete.js b/javascript/tagAutocomplete.js index 69aab03..5ad9f90 100644 --- a/javascript/tagAutocomplete.js +++ b/javascript/tagAutocomplete.js @@ -621,7 +621,7 @@ function updateRuby(textArea, prompt) { const replaceOccurences = (text, tuple) => { let { tag, escapedTag, translation } = tuple; - let searchRegex = new RegExp(`(?)(?:\\b)${escapedTag}(?!)`, "g"); + let searchRegex = new RegExp(`(?)(?:\\b)${escapedTag}(?:\\b|$|(?=[,| \\t\\n\\r]))(?!)`, "g"); return text.replaceAll(searchRegex, `${escapeHTML(tag)}${translation}`); } @@ -658,8 +658,9 @@ function updateRuby(textArea, prompt) { translateNgram(toNgrams(subTags, 2)); translateNgram(toNgrams(subTags, 1)); - let escapedTag = escapeRegExp(tuple.tag.replaceAll("$", "(").replaceAll("%", ")")); - let searchRegex = new RegExp(`(?)(?:\\b)${escapedTag}(?!)`, "g"); + let escapedTag = escapeRegExp(tuple.tag); + + let searchRegex = new RegExp(`(?)(?:\\b)${escapedTag}(?:\\b|$|(?=[,| \\t\\n\\r]))(?!)`, "g"); html = html.replaceAll(searchRegex, subHtml); } });