# Censure

This TypeScript library provides robust and customizable filtering of swear words and offensive language from text. 

## Features

**Multiple Filtering Modes**:** Choose from blacklist (exact word matching), whitelist (allowing only specific words), and regular expression-based filtering for highly flexible control.

**Customizable Word Lists:** Easily add, remove, or modify swear words to tailor the filter to your specific needs and context. Support for multiple languages is easily implemented by adding language-specific word lists.

**Contextual Awareness:** Employ advanced techniques to reduce false positives by considering word context (e.g., "ass" in "assassin" would not be flagged). This feature may require additional configuration or external dependencies.

**Performance Optimization:** Designed for efficiency, minimizing impact on application performance, even with large word lists.

**Easy Integration:** Clean, well-documented API for seamless integration into any TypeScript project.

**Extensibility:** Easily extend the functionality with custom filters and pre-processing logic.

## Support languages

* English

* Russian

### Regex types:

``тупица``            **тупица**, потупицива, потупица, тупицава // не использовать объединение |
``тупиц[а-я]+``       **тупиц**а, по**тупиц**ива, по**тупиц**а, **тупиц**ава
``^тупиц[а-я]+ ``     **тупиц**а, потупицива, потупица, **тупиц**ава
``туп|тупиц[а-я]+``   **туп**ица, по**тупиц**ива, потупица, тупицава
``потуп|тупица``      **тупица**, **потуп**ицива, по**тупица**, **тупица**ва

Комбинируйте правил через | для быстрой работы

 - Whole word - ``cunt``
**cuntamulungo** return false, **cunt** - return true

 - Part of a word with any letters further - ``ass[a-z]+``
**asshole** and **assist** return true

 - Starts with part of a word with any letters further - ``^ass[a-z]+``
**asshole** and **assist** return true

Part of word and Combine part of words can be union, for example:
``cunt|ass|ass[a-z]+|^ass[a-z]+``

### Get started:
```js
import Censure from 'censure-js'

const censure = new Censure();

// Searches if there any abusive words in the text
censure.isBad('Original phrase with abusive words'); // return: bool

// Replace abusive words from string
censure.replace('Original phrase with abusive words'); // return: string (cleaned text)

// Fixing abusive words inside string
censure.fix('Original phrase with abusive words'); // return: string (fixed text)
```
