From 77b88ca701a4c751b31d890d2d45a14720ebf8bc Mon Sep 17 00:00:00 2001 From: Stephen Sullivan Date: Tue, 26 Nov 2024 14:33:31 +0000 Subject: [PATCH] Correct "sentense" to "sentence" and add more solidity to function --- Readme.md | 21 +++++++++------------ filter.js | 35 ++++++++++++++++++++++------------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/Readme.md b/Readme.md index a9b37e5..29d80e1 100644 --- a/Readme.md +++ b/Readme.md @@ -2,7 +2,6 @@ Complete swear filter package which support most languages and more than **10000 words** . - ## Installation npm install swearify --save @@ -10,16 +9,14 @@ Complete swear filter package which support most languages and more than **10000 ## Usage ```js -const filter = require('swearify'); - -const result = filter.findAndFilter ( -'Lorem ipsum dolor fUck amet, consectetur xxx elit, sed do жопа tempor incididunt fuck ut sex et -dolore magna aliqua, lorem دیوس dolor sit amet, consectetur بیناموس elit, sed do eiusmod tempor incididunt -ut b*tch et dolore ковровщик aliqua 🖕', // your sentence to filter -'▩', // placeholder -['en', 'fa', 'ru'], // filter in which languages -['sex'], // allowed swears -[], // add your own words +const filter = require("swearify"); + +const result = filter.findAndFilter( + "Lorem ipsum dolor fUck amet, consectetur xxx elit, sed do жопа tempor incididunt fuck ut sex et dolore magna aliqua, lorem دیوس dolor sit amet, consectetur بیناموس elit, sed do eiusmod tempor incididunt ut b*tch et dolore ковровщик aliqua 🖕", // your sentence to filter + "▩", // placeholder + ["en", "fa", "ru"], // filter in which languages + ["sex"], // allowed swears + [] // add your own words ); console.log(result); @@ -35,7 +32,7 @@ console.log(result); **bad_words:** [ 'ковровщик', 'بیناموس', 'b*tch', 'fuck', 'دیوس', 'жопа', 'sex', 'xxx', 'xx', '🖕'], -**filtered_sentense:** +**filtered_sentence:** 'Lorem ipsum dolor ▩▩▩▩ amet, consectetur ▩▩▩ elit, sed do ▩▩▩▩ tempor incididunt ▩▩▩▩ ut sex et dolore magna aliqua, lorem ▩▩▩▩ dolor sit amet, consectetur ▩▩▩▩▩▩▩ elit, sed do eiusmod tempor incididunt ut b\*▩▩▩▩▩ et dolore ▩▩▩▩▩▩▩▩▩ aliqua ▩▩', diff --git a/filter.js b/filter.js index 1896454..f6d7ce5 100644 --- a/filter.js +++ b/filter.js @@ -1,24 +1,32 @@ const words = require("./data/words.json"); const findAndFilter = ( - sentense, - placeholder, - languages, - allowed_words, - myList + sentence, + placeholder = "*", + languages = ['en'], + allowed_words = [], + myList = [] ) => { + const selected_languages = []; try { let found = []; - //find sweras according to slected languages + //find sweras according to selected languages for (let i = 0; i < languages.length; i++) { + if (words[languages[i]] === undefined) { + console.warn(`Language ${languages[i]} not found`); + continue; + } else { + selected_languages.push(languages[i]); + } + let language = languages[i]; found = [ ...found, - ...words[language].filter((e) => sentense.toLowerCase().includes(e)), + ...words[language].filter((e) => sentence.toLowerCase().includes(e)), ]; found = [ ...found, - ...myList.filter((e) => sentense.toLowerCase().includes(e)), + ...myList.filter((e) => sentence.toLowerCase().includes(e)), ]; } //sort founded words by length @@ -30,7 +38,7 @@ const findAndFilter = ( const spoilString = new Array(found[i].length) .fill(placeholder) .join(""); - sentense = sentense.replaceAll( + sentence = sentence.replaceAll( new RegExp(found[i], "gi"), spoilString ); @@ -38,18 +46,19 @@ const findAndFilter = ( } return { found: true, - selected_languages: languages, + selected_languages, bad_words: found, - filtered_sentense: sentense, + filtered_sentence: sentence, allowed_words: allowed_words, }; } - //if there is no swear in the sentense return false + //if there is no swear in the sentence return false return { found: false, }; } catch (error) { - console.log("error in findAndFilter", error); + console.warn("error in findAndFilter", error); + throw error; } };