Popularity
4.4
Growing
Activity
4.2
-
32
3
6

Monthly Downloads: 4,384
Programming language: Elixir
License: Apache License 2.0
Tags: Text And Numbers    

expletive alternatives and similar packages

Based on the "Text and Numbers" category.
Alternatively, view expletive alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of expletive or a related project?

Add another 'Text and Numbers' Package

README

Expletive

An obscenity detection and filtering library for Elixir, freely inspired by the obscenity gem.

Installation

Add Expletive as a dependency to your project mix.exs:


def deps do
  [{:expletive, "~> 0.1.0"}]
end

Usage

All Expletive functions expect a configuration to be passed:


config = Expletive.configure(blacklist: ~w[very bad words])

Expletive.profane?("this is bad!", config)
# => true
Expletive.profane?("perfectly safe", config)
# => false

Expletive.profanities("this is bad, so BAD!", config)
# => ["bad", "BAD"]

Sanitization

The library offers a fairly wide variety of profanity replacement strategies which can be defined at configuration time or passed explicitly.

Expletive.sanitize("this is bad, so BAD!", config)
# => "This is $#[email protected]%, so %[email protected]!#!"

Expletive.sanitize("this is bad, so BAD!", config, :stars)
# => "This is ***, so ***!"

Expletive.sanitize("this is bad, so BAD!", config, :vowels)
# => "This is b*d, so B*D!

Expletive.sanitize("this is bad, so BAD!", config, ":poop:")
# => "This is :poop:, so :poop:!

Expletive.sanitize("this is bad, so BAD!", config, {:repeat, "-"})
# => "This is ---, so ---!

Expletive.sanitize("this is bad, so BAD!", config, :keep_first_letter)
# => "This is b**, so B**!

Expletive.sanitize("this is bad, so BAD!", config, {:keep_first_letter, "-"})
# => "This is b--, so B--!

Whitelisting

If you wish to allow some words present in the blacklist, you can add exceptions to a whitelist at configuration time:

config = Expletive.configure(blacklist: ~w[very bad words], whitelist: ~w[words])

Expletive.profane?("words", config)
# => false

Built-in blacklists

The library comes with a couple of word lists ready to use:


config = Expletive.configure(blacklist: Expletive.Blacklist.english)

Expletive.profane?("this is batshit crazy!", config)
# => true

config = Expletive.configure(blacklist: Expletive.Blacklist.international)

Expletive.profanities("ceci n'est pas une pipe", config)
# => ["pipe"]

Known Limitations

I18n concerns

A couple of replacement strategies (:vowels and :nonconsonants) are currently limited to the english language.