• Stars
    star
    304
  • Rank 132,537 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 10 years ago
  • Updated almost 3 years ago

Reviews

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

Repository Details

JS library to inflect Russian first, last, and middle names.

Petrovich

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для склонСния ΠΏΠ°Π΄Π΅ΠΆΠ΅ΠΉ русских ΠΈΠΌΠ΅Π½, Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ ΠΈ отчСств.

Установка

Для NodeJS

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ npm:

npm install petrovich

Для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ bower:

bower install petrovich

Или Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Бсылка: petrovich.min.js

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅:

<script src="/path/to/petrovich/dist/petrovich.min.js"></script>

Π’ NodeJS:

var petrovich = require('petrovich');

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

ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²ΠΈΡ‡Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ двумя способами.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

// создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ person, содСрТащий ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ gender
// ΠΈ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² first, middle ΠΈ last
var person = {
 gender: 'male',
 first: 'ΠŸΠ΅Ρ‚Ρ€',
 last: 'Чайковский'
};
// Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²ΠΈΡ‡Π° ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΡƒΠΊΠ°Π·Π°Π² ΠΏΠ°Π΄Π΅ΠΆ:
petrovich(person, 'dative');
// Π²Π΅Ρ€Π½Π΅Ρ‚ копию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:
// {gender: 'male', first: 'ΠŸΠ΅Ρ‚Ρ€Ρƒ', last: 'Чайковскому'}

Если ΡƒΠΊΠ°Π·Π°Π½ΠΎ отчСство, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ», ΠΎΠ½ опрСдСлится автоматичСски:

var person = {
 first: 'ΠŸΠ΅Ρ‚Ρ€',
 middle: 'Π˜Π»ΡŒΠΈΡ‡',
 last: 'Чайковский'
};
petrovich(person, 'dative');
// Π²Π΅Ρ€Π½Π΅Ρ‚:
// {first: 'ΠŸΠ΅Ρ‚Ρ€Ρƒ', middle: 'Π˜Π»ΡŒΠΈΡ‡Ρƒ', last: 'Чайковскому', gender: 'male'}

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования

// ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²ΠΈΡ‡ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²ΠΈΠ΄Π° petrovich[gender][nametype][case]:
petrovich.male.first.genitive('АндрСй') // Π²Π΅Ρ€Π½Π΅Ρ‚ "АндрСя"
petrovich.female.last.accusative('Иванова') // Π²Π΅Ρ€Π½Π΅Ρ‚ "Π˜Π²Π°Π½ΠΎΠ²Ρƒ"

Авто ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π° ΠΏΠΎ отчСству

ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²ΠΈΡ‡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ» ΠΏΠΎ отчСству, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ простоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ:

  • муТскиС ΠΈΠΌΠ΅Π½Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° "-ΠΈΡ‡",
  • ТСнскиС - Π½Π° "-Π½Π°",
  • всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ опрСдСляСтся ΠΊΠ°ΠΊ "androgynous".
petrovich.detect_gender('Π˜Π²Π°Π½ΠΎΠ²ΠΈΡ‡') // Π²Π΅Ρ€Π½Π΅Ρ‚ 'male'
petrovich.detect_gender('Π˜Π»ΡŒΠΈΠ½ΠΈΡ‡Π½Π°') // Π²Π΅Ρ€Π½Π΅Ρ‚ 'female'
petrovich.detect_gender('Π‘Π»Π°Π±Π»Π°Π±Π»Π°') // Π²Π΅Ρ€Π½Π΅Ρ‚ 'androgynous'

Cписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Пол ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

  • male - муТской,
  • female - ТСнский,
  • androgynous - Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ.

Π’ΠΈΠΏΡ‹ ΠΈΠΌΠ΅Π½ΠΈ:

  • first - имя,
  • last - фамилия,
  • middle - отчСство.

ПадСТи:

  • nominative - ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ (ΠΊΡ‚ΠΎ? Ρ‡Ρ‚ΠΎ?)
  • genitive - Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ (ΠΊΠΎΠ³ΠΎ? Ρ‡Π΅Π³ΠΎ?)
  • dative - Π΄Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ (ΠΊΠΎΠΌΡƒ? Ρ‡Π΅ΠΌΡƒ?)
  • accusative - Π²ΠΈΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ (ΠΊΠΎΠ³ΠΎ? Ρ‡Ρ‚ΠΎ?)
  • instrumental - Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ (ΠΊΠ΅ΠΌ? Ρ‡Π΅ΠΌ?)
  • prepositional - ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ½Ρ‹ΠΉ (ΠΎ ΠΊΠΎΠΌ? ΠΎ Ρ‡Π΅ΠΌ?)

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

Π”Π²Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

  • petrovich.js - содСрТит собствСнно ΠΌΠΎΠ΄ΡƒΠ»ΡŒ,
  • rules.json - содСрТит ΠΏΡ€Π°Π²ΠΈΠ»Π° склонСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ бСрутся ΠΈΠ· этого рСпозитория.

ΠŸΡ€Π°Π²ΠΈΠ»Π° Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² процСссС сборки (см. Π½ΠΈΠΆΠ΅).

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инструмСнты:

  • Grunt для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сборки,
  • Jasmine для тСстирования.

Установка инструмСнтов:

sudo npm install -g grunt-cli
sudo npm install -g jasmine-node

ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория:

git clone https://github.com/petrovich/petrovich-js.git

Установка Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ:

npm install

ВСсты находятся Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ tests/spec/. Запуск тСстов:

jasmine-node tests/spec/
# ΠΈΠ»ΠΈ просто:
npm test

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ dist (Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ rules.json Π² petrovich.js ΠΈ создаСт ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ копию послСднСго)

grunt build