GithubHelp home page GithubHelp logo

profane's Introduction

@cnakazawa/profane

Zero dependency profanity detector based on Swearjar and Profane.

Note: Some examples may contain offensive language for illustration purposes.

install

npm install @cnakazawa/profane

Usage

new Profane(options?)

Create a new instance:

import Profane from 'profane';

const profane = new Profane();

check(text: string): boolean

Check if a text matches the word list:

profance.check('Hell no'); // true
profance.check('H3ll no'); // true
profane.check('Banana Banana Banana'); // false

censor(censored: string, replacement?: string): string;

Censor words matching the word list:

profane.censor('Hell no'); // '**** no'
profane.censor('Hell no', '•'); // '•••• no'

getWordFrequencies(text: string): Record<string, number>;

Get the word frequencies of words matching the word list:

```js
const frequencies = profane.getWordFrequencies('horniest hornet fart');
{
  "horniest": 1,
  "fart": 1
}

getCategoryFrequencies(text: string): Record<string, number>;

Get the category frequencies of words matching the word list:

const frequencies = profane.getCategoryFrequencies('horniest hornet fart');
{
  "inappropriate": 1,
  "sexual": 1
}

Options

words: Record<string, ReadonlyArray<string>>

You can configure your Profane instance with a custom word list by supplying an object with word definitions:

const profane = new Profane({
  words: {
    happy: ['inappropriate'],
    awesome: ['elated'],
  },
});

profane.check('Mr. Happy is awesome'); // true
profane.getCategoryFrequencies('Mr. Happy is awesome'); // {inappropriate: 1, elated: 1}

You can receive a copy of the word list through the getWordList() function:

import {getWordList} from '@cnakazawa/profane';

getWordList(); // Record<string, ReadonlyArray<string>>

normalize?: boolean

Determines whether to normalize Leet or not. Defaults to true'.

new Profane({normalize: false}).check('H3ll'); // false
new Profane({normalize: true}).check('H3ll'); // true

wholeWordsOnly?: boolean

Whether to match only on whole words or not. Defaults to false'.

new Profane({wholeWordsOnly: false}).check('shell'); // true
new Profane({wholeWordsOnly: true}).check('shell'); // false

Updates to the word list

The default word list was lifted from Swearjar and may be out-of-date. Please feel free to send Pull Requests with new and updated definitions.

profane's People

Contributors

cpojer avatar willwur avatar willynilly avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.