Profanity detection and filtering library for CFML applications
This component can be installed as standalone or as a ColdBox Module. Either approach requires a simple CommandBox command:
box install swearjar
This package is also a ColdBox module. The module can be configured by creating a swearjar
configuration structure in your application configuration file (config/Coldbox.cfc
) with the following settings:
swearjar = {
libraryFilePath = '' // The path to your chosen profanity library JSON file
};
You can optionally leave this configuration out and swearjar
will use the default en_US.json
file.
Then you can inject the CFC via Wirebox:
property name="swearjar" inject="swearjar@swearjar";
Instantiate the component:
swearJar = new swearjar();
Returns true if the given string contains profanity.
swearJar.profane( 'hello there' ); // false
swearJar.profane( 'hello mother f-bomb' ); // true
Replaces profanity with asterisks.
var clean = swearjar.censor( 'f-bomb you' ); // **** you
Replaces profanity with a replacement word, if one exists within the library file. If not, the word will be replaced with asterisks.
var clean = swearjar.sugarcoat( 'Your life is like poor pornography' ); // Your life is like poor erotic literature
Replaces profanity with the word unicorn.
var clean = swearjar.unicorn( 'fuck you, you fucking stupid cunt!' ); // unicorn you, you unicorn stupid unicorn!
Get the words alongside their categories.
swearjar.words( 'fuck you john doe' ); // { fuck: ['sexual'] }
Get the words alongside their categories, count and a censored version of the text.
swearjar.detailedProfane( 'fuck you john doe' );
returns:
{
categoryCount: {
sexual: 1
},
censored: '**** you john doe',
profane: true,
wordCount: {
fuck: 1
},
words: {
fuck: [
'sexual'
]
}
}
Generates a report from the given text.
swearjar.scorecard( 'f-bomb you' ); // {sexual: 1, inappropriate: 1}
Add a regex.
swearjar.addRegex( 'addedword?\\b', ['detected'] );
Add a simple word.
swearjar.addSimple( 'addedword', ['detected'] );
Add an emoji word.
swearjar.addEmoji( '1f596', ['detected'] );
Loads a dictionary of words to be used as filter.
NOTE: A US English default list located in the config directory is included and loaded by default.
swearjar.loadBadWords( './config/profanity.json' );
A dictionary is just a plain JSON file containing an object where its keys are the words to check for and the values are arrays of categories where the words fall in.
{
"regex": {
"\\w*fuck\\w*": [
"category1",
"category2"
],
"word2": [
"category1"
],
"word3": [
"category2"
]
},
"simple": {
"word1": [
"category1",
"category2"
],
"word2": [
"category1"
],
"word3": [
"category2"
]
},
"emoji": {
"1f4a9": [
"category1",
"category2"
],
"word2": [
"category1"
],
"word3": [
"category2"
]
}
}
swearjar
is based on swearjar-node, which itself is based on Swearjar (Ruby) and Swearjar PHP.