No commit activity in last 3 years
No release in over 3 years
Gem for filtering russian obscene language
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.3
>= 0
 Project Readme

Russian Obscenity

Гем предназначен для нахождения и фильтрации ненормативной лексики в любом тексте.

Основан на библиотеке для проверки мата 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_]*й)'