Skip to content

OpenGems/polite_text

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PoliteText

Gem Version security Gem

PoliteText is making your users' input polite πŸ‘€

πŸ‘‰ Replace the swear words or execute callbacks if the input is not polite based on a default swear words list or your own.

Installation πŸ‘¨β€πŸ’» πŸ‘©β€πŸ’»

Add this line to your application's Gemfile:

gem 'polite_text'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install polite_text

Usage with the default swear words list 🌝

Swear words πŸ”ž

PoliteText has a default list of forbidden words, this list includes the most common swear words used on the web. You can acces the list of swear words here.

Remove swear words 🀬

str = "This gem is a fucking big shit but let's try it"

PoliteText.be_polite!(str)
=> "This gem is a *** big *** but let's try it"

Check if string is polite πŸ™…β€β™‚οΈ πŸ™…β€β™€οΈ

str = "This gem is a fucking big shit but let's try it"

PoliteText.is_polite?(str)
=> false

Example for an Article model

# == Schema Information
#
# Table name: articles
#
#  id         :bigint           not null, primary key
#  text      :string           default(""), not null
#  created_at :datetime         not null
#  updated_at :datetime         not null
#

class Article < ApplicationRecord
  # Callbacks
  before_save :make_text_polite

  # Methods
  def make_text_polite
    PoliteText.be_polite!(text)
  end
end

Usage with custom swear words list 🌞

Custom swear words list πŸ”ž

Create a custom list in a YAML file following this format :

# custom_swear_words.yml

swear_words:
  - gem
  - big
  - but

Place it where you want in your app, we recommend here : ./lib/polite_text/my_custom_swear_words.yml

Confirguration

πŸ“„ Create an initializer named polite_text.rb

✌️ Add the path to your custom swear words list like this :

# ./config/initializers/polite_text.rb

PoliteText.configure do |config|
  config.custom_swear_words_path = "#{__dir__}/../../lib/polite_text/custom_swear_words.yml"
end

PoliteText is now configured with your custom list βœ¨πŸ’«

str = "This gem is a fucking big shit but let's try it"

PoliteText.be_polite!(str)
=> "This *** is a fucking *** shit *** let's try it" 

PoliteText.is_polite?(str)
=> false

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/OpenGems/polite_text. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

Todo πŸ’ͺ

  • Manage locales with I18N for default swear words lists by country.
  • Add default swear words lists from multiple languages.
  • Improve the default swear words list and keeping it short.

License

The gem is available as open source under the terms of the MIT License.