ActiveCleaner
is a set of helpers that helps you in cleaning user-typed content in your ActiveModel depending models (ActiveRecord, Mongoid...)
Extra spaces mean extra storage. And it could ruin your indexes and your sortings.
Tired of doing everywhere:
before_validation :clean_title
def clean_title
unless title.nil?
self.title = title.squish
end
self.title = nil if title.blank?
true
end
:string
(StringCleaner, the default one) : cleans all the space characters. It turns" A \n \t title \t "
into"A title"
.:text
(TextCleaner) : like:string
, but preserves new lines (with a max of 2 successive new lines). useful when the field is rendered with thesimple_format
Rails helper.:markdown
(MarkdownCleaner) : like:text
, but preserves spaces in the beginning of lines (the indentation). useful for... markdown!:utf8mb3
(Utf8mb3Cleaner) : removes all 4-bytes encoded chars in UTF8 strings that mess with theutf8
encoding in MySQL (iOS6 emojis for example).
Add the gem to your Gemfile:
gem 'activecleaner'
Or install with RubyGems:
$ gem install activecleaner
Add include ActiveCleaner
in your model and also do:
clean :field_1, :field_2 ... :field_n, options_1: :value, options_2: :value
:as
(default is:string
) : the symbol name of the cleaner.:nilify
(default isfalse
) : set tonil
when the field was or is cleaned to""
.
class Post
include Mongoid::Document
include ActiveCleaner
field :title
field :subtitle
clean :title, :subtitle, nilify: true
field :body
clean :body, as: :text, nilify: true
end
Contributions and bug reports are welcome.
Clone the repository and run bundle install
to setup the development environment.
Provide a case spec according to your changes/needs, taking example on existing ones (in spec/cases
).
To run the specs:
bundle exec rspec
You can also use guard
to run the specs during dev.
- Maxime Garcia emaxime.com @maximegarcia