• Stars
    star
    402
  • Rank 103,781 (Top 3 %)
  • Language
    Ruby
  • License
    MIT License
  • Created about 11 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Petrovich, an inflector for Russian anthroponyms.

Petrovich

Π‘ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΏΠ°Π΄Π΅ΠΆΠ΅ΠΉ русских ΠΈΠΌΡ‘Π½, Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ ΠΈ отчСств. Π’Ρ‹ Π·Π°Π΄Π°Ρ‘Ρ‚Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ имя Π² ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠ°Π΄Π΅ΠΆΠ΅, Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ Π²Π°ΠΌ. ΠŸΡ€ΠΎΡΡ‚ΠΎ посмотритС Π½Π° Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΈ сдСлайтС Ρ‚Π°ΠΊ ΠΆΠ΅.

Petrovich Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎΠ» ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ, отчСству.

RubyGems Build Status

Установка

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Gemfile:

gem 'petrovich', '~> 1.0'

УстановитС Π³Π΅ΠΌ cрСдствами Bundler:

$ bundle

Или установитС Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ:

$ gem install petrovich

Зависимости

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π³Π΅ΠΌΠ° трСбуСтся Ruby Π½Π΅ младшС вСрсии 1.9.3. Petrovich Π½Π΅ привязан ΠΊ Ruby on Rails ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ свободно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ практичСски Π² Π»ΡŽΠ±Ρ‹Ρ… прилоТСниях ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Π½Π° языкС Ruby.

ИспользованиС

Π’Ρ‹ Π·Π°Π΄Π°Ρ‘Ρ‚Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния (Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ, имя ΠΈ отчСство) Π² ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠ°Π΄Π΅ΠΆΠ΅, Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΄Π΅Π»Π°Π΅Ρ‚ всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅. Если Π²Π°ΠΌ извСстСн ΠΏΠΎΠ» - ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π΅Π³ΠΎ, это повысит ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ даст Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Если ΠΏΠΎΠ» Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, Ρ‚ΠΎ Petrovich попытаСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ автоматичСски. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

# Π‘ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π² Π΄Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Π΄Π΅ΠΆ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° `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 ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ½Ρ‹ΠΉ О ΠΊΠΎΠΌ?

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

Petrovich(
  lastname: 'Бклифасовский'
).gender # => :male

Petrovich(
  firstname: 'АлСксандра',
  lastname: 'Бклифасовская'
).female? # => true

Petrovich(
  lastname: 'Бклифасовский'
).male? # => true

Petrovich(
  firstname: 'Баша',
  lastname: 'АндрСйчук'
).androgynous? # => true

Petrovich(
  firstname: 'Баша',
  lastname: 'АндрСйчук'
  gender: :male,
).male? # => true

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²:

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, послС выполнСния Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΎΡ‚Ρ‡Ρ‘Ρ‚.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ

Благодарности

Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ Π±Ρ‹Π»Π° Π±Ρ‹ ΡΡ‚ΠΎΠ»ΡŒ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π° Π±Π΅Π· содСйствия Павла Π‘ΠΊΡ€Ρ‹Π»Ρ‘Π²Π°, Никиты ΠŸΠΎΠΌΡΡ‰Π΅Π³ΠΎ, Π˜Π³ΠΎΡ€Ρ Π‘ΠΎΡ‡ΠΊΠ°Ρ€Ρ‘Π²Π°, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… людСй.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΠ½Π΄Ρ€Π΅ΡŽ Π‘ΠΈΠ»ΡŒΠΆΠΎ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пСрсонаТ ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²ΠΈΡ‡Π° Π² нашСм Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ΅.

ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹ Petrovich Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языкС ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π˜Ρ… список доступСн ΠΏΠΎ адрСсу https://github.com/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