From 487128cc0a6bc65028723a01a158517bdef1f9be Mon Sep 17 00:00:00 2001 From: Eugene Toder Date: Wed, 18 Feb 2026 14:14:51 -0500 Subject: [PATCH] Disable leetspeak filter It causes too many positives on numbers: 45s, 717, 7175 etc --- src/util.js | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/util.js b/src/util.js index c7a7d28..17911be 100644 --- a/src/util.js +++ b/src/util.js @@ -2,12 +2,14 @@ import moment from "moment"; import { RegExpMatcher, TextCensor, + collapseDuplicatesTransformer, createSimpleTransformer, englishDataset, englishRecommendedTransformers, fixedPhraseCensorStrategy, pattern, - remapCharactersTransformer, + resolveConfusablesTransformer, + toAsciiLowerCaseTransformer, } from "obscenity"; import amber from "@material-ui/core/colors/amber"; @@ -78,10 +80,7 @@ const invisibleChars = new Set([ const fixedDataset = englishDataset .removePhrasesIf((phrase) => phrase.metadata.originalWord === "prick") .addPhrase((phrase) => - phrase - .setMetadata({ originalWord: "ass" }) - .addWhitelistedTerm("45s") - .addWhitelistedTerm("assess") + phrase.setMetadata({ originalWord: "ass" }).addWhitelistedTerm("assess") ) .addPhrase((phrase) => phrase @@ -108,14 +107,26 @@ const fixedDataset = englishDataset ); // Work-around for: // https://github.com/jo3-l/obscenity/issues/100 +const blacklistMatcherTransformers = [ + createSimpleTransformer((c) => (!invisibleChars.has(c) ? c : undefined)), + resolveConfusablesTransformer(), + toAsciiLowerCaseTransformer(), + collapseDuplicatesTransformer({ + defaultThreshold: 1, + customThresholds: new Map([ + ["b", 2], // a_bb_o + ["e", 2], // ab_ee_d + ["o", 2], // b_oo_nga + ["l", 2], // fe_ll_atio + ["s", 2], // a_ss_ + ["g", 2], // ni_gg_er + ]), + }), +]; export const badWords = new RegExpMatcher({ ...fixedDataset.build(), ...englishRecommendedTransformers, - blacklistMatcherTransformers: [ - createSimpleTransformer((c) => (!invisibleChars.has(c) ? c : undefined)), - remapCharactersTransformer({ l: "/" }), - ...englishRecommendedTransformers.blacklistMatcherTransformers, - ], + blacklistMatcherTransformers, }); const censor = new TextCensor().setStrategy(fixedPhraseCensorStrategy("🤬"));