From 5362058f3552d2c410638372fd48bb9a91861d2b Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Thu, 5 Nov 2020 15:44:59 -0600 Subject: [PATCH] =?UTF-8?q?Revert=20"fix(banned=20words):=20fix=20partial?= =?UTF-8?q?=20matching=20of=20words=20containing=20diacritic=E2=80=A6=20(#?= =?UTF-8?q?12444)"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit f2bcdd21de6c61495644bec8466401f294405f66. --- test/api/unit/libs/stringUtils.test.js | 5 ----- website/server/libs/stringUtils.js | 11 +---------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/test/api/unit/libs/stringUtils.test.js b/test/api/unit/libs/stringUtils.test.js index 947274df53..0596cd16b9 100644 --- a/test/api/unit/libs/stringUtils.test.js +++ b/test/api/unit/libs/stringUtils.test.js @@ -8,10 +8,5 @@ describe('stringUtils', () => { const matches = getMatchesByWordArray(message, bannedWords); expect(matches.length).to.equal(bannedWords.length); }); - it('doesn\'t flag names with accented characters', () => { - const name = 'TESTPLACEHOLDERSWEARWORDHEREé'; - const matches = getMatchesByWordArray(name, bannedWords); - expect(matches.length).to.equal(0); - }); }); }); diff --git a/website/server/libs/stringUtils.js b/website/server/libs/stringUtils.js index 39f75356c5..a7e4b08aa8 100644 --- a/website/server/libs/stringUtils.js +++ b/website/server/libs/stringUtils.js @@ -4,21 +4,12 @@ export function removePunctuationFromString (str) { // NOTE: the wordsToMatch aren't escaped in order to support regular expressions, // so this method should not be used if wordsToMatch contains unsanitized user input - export function getMatchesByWordArray (str, wordsToMatch) { - // remove accented characters from the string, which would trip up the regEx - // later on, by using the built-in Unicode normalisation methods - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize - // https://www.unicode.org/reports/tr15/#Canon_Compat_Equivalence - // https://unicode-table.com/en/#combining-diacritical-marks - - const normalizedStr = str.normalize('NFD').replace(/[\u0300-\u036f]/g, ''); - const matchedWords = []; const wordRegexs = wordsToMatch.map(word => new RegExp(`\\b([^a-z]+)?${word}([^a-z]+)?\\b`, 'i')); for (let i = 0; i < wordRegexs.length; i += 1) { const regEx = wordRegexs[i]; - const match = normalizedStr.match(regEx); + const match = str.match(regEx); if (match !== null && match[0] !== null) { const trimmedMatch = removePunctuationFromString(match[0]).trim(); matchedWords.push(trimmedMatch);