jam-cloud/ruby/lib/jam_ruby/lib/profanity.rb

40 lines
886 B
Ruby

module JamRuby
class Profanity
@@dictionary_file = File.join(File.dirname(__FILE__), '../../..', 'config/profanity.yml')
@@dictionary = nil
def self.dictionary
@@dictionary ||= load_dictionary
end
def self.load_dictionary
YAML.load_file(@@dictionary_file)
end
def self.check_word(word)
dictionary.include?(word.downcase)
end
def self.is_profane?(text)
return false if text.nil?
text.split(/\W+/).each do |word|
return true if check_word(word)
end
return false
end
end
end
# This needs to be outside the module to work.
class NoProfanityValidator < ActiveModel::EachValidator
# implement the method called during validation
def validate_each(record, attribute, value)
record.errors[attribute] << 'cannot contain profanity' if JamRuby::Profanity.is_profane?(value)
end
end