• Stars
    star
    304
  • Rank 137,274 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 11 years ago
  • Updated over 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