Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 9 additions & 12 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,21 @@

Complete swear filter package which support most languages and more than **10000 words** .


## Installation

npm install swearify --save

## 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);
Expand All @@ -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 <ins>sex</ins> et dolore
magna aliqua, lorem ▩▩▩▩ dolor sit amet, consectetur ▩▩▩▩▩▩▩ elit, sed do eiusmod tempor incididunt ut b\*▩▩▩▩▩ et dolore ▩▩▩▩▩▩▩▩▩ aliqua ▩▩',

Expand Down
35 changes: 22 additions & 13 deletions filter.js
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -30,26 +38,27 @@ const findAndFilter = (
const spoilString = new Array(found[i].length)
.fill(placeholder)
.join("");
sentense = sentense.replaceAll(
sentence = sentence.replaceAll(
new RegExp(found[i], "gi"),
spoilString
);
}
}
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;
}
};

Expand Down