https://github.com/petrovich/petrovich-ruby
Petrovich, an inflector for Russian anthroponyms.
https://github.com/petrovich/petrovich-ruby
help-needed inflection languages russian
Last synced: 5 months ago
JSON representation
Petrovich, an inflector for Russian anthroponyms.
- Host: GitHub
- URL: https://github.com/petrovich/petrovich-ruby
- Owner: petrovich
- License: mit
- Created: 2013-04-19T16:49:13.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2024-11-16T11:01:57.000Z (11 months ago)
- Last Synced: 2025-04-14T02:57:36.017Z (6 months ago)
- Topics: help-needed, inflection, languages, russian
- Language: Ruby
- Homepage: https://rubygems.org/gems/petrovich
- Size: 1.91 MB
- Stars: 410
- Watchers: 27
- Forks: 33
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: MIT-LICENSE
Awesome Lists containing this project
README

Склонение падежей русских имён, фамилий и отчеств. Вы задаёте начальное имя
в именительном падеже, а получаете в нужном вам. Просто посмотрите на
[демонстрацию](http://petrovich.nlpub.ru/) и сделайте так же.Petrovich также позволяет определять пол по имени, фамилии, отчеству.
[![RubyGems][rubygems_badge]][rubygems_link] [![Build Status][tests_badge]][tests_link]
[rubygems_badge]: https://badge.fury.io/rb/petrovich.svg
[rubygems_link]: https://rubygems.org/gems/petrovich
[tests_badge]: https://github.com/petrovich/petrovich-ruby/actions/workflows/test.yml/badge.svg
[tests_link]: https://github.com/petrovich/petrovich-ruby/actions/workflows/test.yml## Установка
Добавьте в Gemfile:
```ruby
gem 'petrovich', '~> 1.0'
```Установите гем cредствами Bundler:
$ bundle
Или установите его отдельно:
$ gem install petrovich
## Зависимости
Для работы гема требуется Ruby не младше версии 1.9.3. Petrovich не
привязан к Ruby on Rails и может свободно использоваться практически
в любых приложениях и библиотеках на языке Ruby.## Использование
Вы задаёте начальные значения (фамилию, имя и отчество) в именительном
падеже, а библиотека делает всё остальное. Если вам известен пол - укажите его, это повысит скорость работы и даст более точные результаты. Если пол не указан, то Petrovich попытается определить его автоматически. Примеры:```ruby
# Склонение в дательный падеж при помощи метода `dative`. Существуют методы `genitive`,
# `dative`, `accusative`, `instrumental`, `prepositional`.
Petrovich(
lastname: 'Салтыков-Щедрин',
firstname: 'Михаил',
middlename: 'Евграфович',
).dative.to_s # => Салтыкову-Щедрину Михаилу Евграфовичу# Склонение в творительный падеж с использованием метода `to` и возвратом отчества.
# Аналогично можно вызвать метод `firstname`, чтобы получить имя.
Petrovich(
firstname: 'Иван',
middlename: 'Петрович',
).to(:instrumental).middlename # => Петровича# Склонение с указанием пола. В данном случае, по имени и фамилии невозможно определить пол
# человека, поэтому, если вам известен пол, то всегда передавайте его в аргументах,
# чтобы склонение было верным.
# Если пол неизвестен, то гем попытается определить его самостоятельно.
# Пол должен быть указан в виде строки или символа. Возможные значения: male, female.
Petrovich(
lastname: 'Андрейчук',
firstname: 'Саша',
gender: :male
).to(:instrumental).to_s # => Андрейчуку Саше
```Полный список поддерживаемых методов склонения приведён
в таблице ниже.| Метод | Падеж | Характеризующий вопрос |
|----------------|--------------|------------------------|
| genitive | родительный | Кого? |
| dative | дательный | Кому? |
| accusative | винительный | Кого? |
| instrumental | творительный | Кем? |
| prepositional | предложный | О ком? |### Определение пола
Примеры:
```ruby
Petrovich(
lastname: 'Склифасовский'
).gender # => :malePetrovich(
firstname: 'Александра',
lastname: 'Склифасовская'
).female? # => truePetrovich(
lastname: 'Склифасовский'
).male? # => truePetrovich(
firstname: 'Саша',
lastname: 'Андрейчук'
).androgynous? # => truePetrovich(
firstname: 'Саша',
lastname: 'Андрейчук'
gender: :male,
).male? # => true
```## Интерфейс командной строки
Примеры вызовов:
```bash
petrovich -l Иванов -f Иван -m Иванович -g male -c accusative
petrovich -l Иванов -f Иван -m Иванович -c accusative -n
petrovich -l Иванов -f Иван -m Иванович -c accusative -o
```Подробное руководство: `petrovich --help`.
## Модульные тесты
Для запуска тестов достаточно выполнить команду `rake`.
Чтобы запустить тесты "аккуратности" по словарю фамилий, выполните команду `rake evaluate`, после выполнения вы увидите подробный отчёт.## Разработчики
* [Андрей Козлов](https://github.com/tanraya)
* [Дмитрий Усталов](https://github.com/dustalov)## Благодарности
Эта библиотека не была бы столь замечательна без содействия Павла Скрылёва,
Никиты Помящего, Игоря Бочкарёва, и других хороших людей.Отдельная благодарность [Андрею Бильжо](https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D0%BB%D1%8C%D0%B6%D0%BE,_%D0%90%D0%BD%D0%B4%D1%80%D0%B5%D0%B9_%D0%93%D0%B5%D0%BE%D1%80%D0%B3%D0%B8%D0%B5%D0%B2%D0%B8%D1%87) за то, что разрешил нам использовать персонаж Петровича в нашем логотипе.
## Портирование
Существуют официальные порты Petrovich на другие языке и платформы. Их список
доступен по адресу . Ребята, спасибо!## Содействие
Если вы нашли баги как программной части, так и в базе правил, то вы всегда
можете форкнуть репозиторий и внести необходимые изменения. Ваша помощь не
останется незамеченной! Если вы заметили ошибки при склонении падежей имён,
фамилий или отчеств, можете написать об этом в Issues на GitHub.
Проблема будет сразу же исследована и, по возможности, решена.Не стесняйтесь добавлять улучшения.
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request