Гем предназначен для нахождения и фильтрации ненормативной лексики в любом тексте.
Основан на библиотеке для проверки мата antimat.pm
- заменяет матерные слова на любую фразу;
- заменяет матерные слова содержащие между буквами пробелы, знаки подчеркивания и другие символы-разделители;
- аккуратно заменяет мат, оставляя нетронутыми знаки препинания и другие символы в тексте;
- заменяет русский мат, написанный английскими буквами;
- работает с UTF8;
- поддерживает пользовательские словари.
Добавьте следующую строку в Gemfile:
gem 'russian_obscenity'
И запустите:
bundle install
Или установите гем вручную:
gem install russian_obscenity
RussianObscenity.obscene?
анализирует содержимое и возвращает true
или false
в зависимости от нахождения ненормативной лексики:
RussianObscenity.obscene?('просто текст')
=> false
RussianObscenity.obscene?('текст с хуями')
=> true
RussianObscenity.sanitize
возвращает новый текст с заменёнными матами, или оригинальный текст, если он не содержит обсценной лексики:
RussianObscenity.sanitize('просто текст')
=> "просто текст"
RussianObscenity.sanitize('просто хуевый текст')
=> "просто * текст"
RussianObscenity.sanitize('просто хуевый текст', '(бип)')
=> "просто (бип) текст"
RussianObscenity.find
возвращает массив найденных обсценных слов:
RussianObscenity.find('просто текст')
=> []
RussianObscenity.find('просто текст с хуем и жопой')
=> ["хуем", "жопой"]
RussianObscenity.dictionary
возвращает список подключенных словарей:
RussianObscenity.dictionary
=> [:default]
Сеттеру dictionary=
передается массив с путями до словарей:
# фильтрация будет идти по стандартному и двум дополнительным словарям
RussianObscenity.dictionary = [:default, './my_first_dictionary.yml', '../second_dict.yml']
# фильтрация будет только по одному дополнительному словарю
RussianObscenity.dictionary = ['./my_first_dictionary.yml']
- словарь должен быть в формате yaml
- каждая строчка в словаре должна быть словом или строкой содержащей регулярное выражение
- каждое cлово или регулярное выражение должно начинать и оканчивать поиск с буквы или цифры. Все, что отличается от букв и цифр, считается признаком начала слова и уже учтено при поиске или замене
- 'мама'
- 'дедушк(?:[аеуи]|ой)'
- 'п[\W_]*а[\W_]*п[\W_]*(?:[еуыа]|о[\W_]*й)'