=encoding utf8

=head1 ИМЯ

Lingua::RU::Inflect - Склоняет русские имена

=head1 ВЕРСИЯ

Версия 0.05

=head1 ОПИСАНИЕ

L<Lingua::RU::Inflect> — модуль perl, предоставляющий ряд
функций для русского языка: склонение имён (а также некоторых
нарицательных существительных и прилагательных)
и определение пола по имени.

Добавленные в версии 0.02 функции выбора правильной формы
предлога с беглой гласной в зависимости от следующего за ним слова
перенесены в L<Lingua::RU::Preposition>.

Пример использования:

    use Lingua::RU::Inflect;

    my @name = qw/Петрова Любовь Степановна/;

    my $gender = detect_gender_by_given_name(@name);
    # $gender == FEMININE

    my @genitive = inflect_given_name(GENITIVE, @name);
    # $genitive == qw/Петровой Любови Степановны/;

=head1 ПЛАНЫ

В следующих версиях планируется склонять
любые существительные, любые слова, что угодно...

=head1 ЭКСПОРТ

Функции C<detect_gender_by_given_name> и
C<detect_gender_by_given_name> экспортируются по умолчанию.

Кроме того, можно экспортировать константы с именами падежей:

    use Lingua::RU::Inflect qw/:cases/;

Или функции и константы пола/рода:

    use Lingua::RU::Inflect qw/:subs :genders/;

Или короткие псевдонимы функций

    use Lingua::RU::Inflect qw/:short/;

Или всё имеющееся: функции, псевдонимы, константы падежей и пола:

    use Lingua::RU::Inflect qw/:all/; # или
    use Lingua::RU::Inflect qw/:cases :genders :subs/;

=head1 ФУНКЦИИ

=head2 detect_gender_by_given_name

Пытается определить пол по имени.
Принимает до трёх аргументов: I<фамилию>, I<имя>, I<отчество>.

Возвращает C<MASCULINE> либо C<FEMININE> при успешном определении
мужского либо женского пола соответственно или C<undef> при
невозможности однозначного определения.

=head3 Правила определения

При совпадении с каким-либо правилом оставшиеся правила игнорируются.

=over 4

=item 1

Отчество, если указано, позволяет однозначно определить пол: женские отчества заканчиваются на «на», мужские — на «ич» и  «ыч».

=item 2

Большинство русских женских имён оканчивается гласными «а» и «я».
Большинство русских мужских имён оканчивается согласной.

Существуют исключения из обоих правил, женские имена (например, русское
имя Любовь, библейские имена Руфь, Рахиль, иностранные имена) могут
заканчиваться согласной буквой; мужские имена могут заканчиваться на «а»
и «я», особенно это относится к уменьшительно-ласкательным формам имён:
Алёша (Алексей), Коля (Николай) и т. д. По некоторым
уменьшительно-ласкательным формам имён нельзя установить пол ввиду
неоднозначности: так, имя Саша соответствует как мужскому имени
Александр, так и женскому Александра; Женя — мужскому Евгений и женскому
Евгения. Подобные исключения обрабатываются.

При получении неопределённого результата функция пытается определить его на следующем шаге.

=item 3

Большинство русских фамилий образовано от притяжательных слов
(включая имена). Женские варианты таких фамилий заканчиваются на «а».
Некоторые фамиллии образованы от прилагательных. Женские варианты таких
фамилий заканчиваются на «я».

=back

=head2 _inflect_given_name

Склоняет фамилию, имя, отчество.
Принимает до 5 аргументов — I<пол>, I<падеж>, I<фамилия>, I<имя>,
I<отчество> (I<фамилия>, I<имя>, I<отчество> должны быть в именительном
падеже).

Возвращает список — I<фамилию>, I<имя>, I<отчество> в заданном падеже.

=head2 inflect_given_name

Определяет пол по имени и склоняет это имя.

Принимает до 5 аргументов — I<падеж>, I<фамилия>, I<имя>,
I<отчество> (I<фамилия>, I<имя>, I<отчество> должны быть в именительном
падеже).

I<Падеж> может быть представлен константой, доступны имена:
C<NOMINATIVE>, C<GENITIVE>, C<DATIVE>, C<ACCUSATIVE>, C<INSTRUMENTAL>,
C<PREPOSITIONAL> для именительного, родительного, дательного,
винительного, творительного и предложного падежей соответственно.

Возвращает список — I<фамилию>, I<имя>, I<отчество> в заданном падеже.

=head2 Удалённые функции

Функции для выбора предлогов перенесены в L<Lingua::RU::Preposition>.

=head3 choose_preposition_by_next_word

Выбирала предлог с беглой гласной (например, о/об/обо) по следующему за
ним слову.

=head3 izo

C<izo> — псевдоним для C<choose_preposition_by_next_word 'из',>

=head3 ko

C<ko> — псевдоним для C<choose_preposition_by_next_word 'к',>

=head3 nado

C<nado> — псевдоним для C<choose_preposition_by_next_word 'над',>

=head3 ob

C<ob> — псевдоним для C<choose_preposition_by_next_word 'о',>

=head3 oto

C<oto> — псевдоним для C<choose_preposition_by_next_word 'от',>

=head3 podo

C<podo> — псевдоним для C<choose_preposition_by_next_word 'под',>

=head3 predo

C<predo> — псевдоним для C<choose_preposition_by_next_word 'пред',>

=head3 peredo

C<peredo> — псевдоним для C<choose_preposition_by_next_word 'перед',>

=head3 so

C<so> — псевдоним для C<choose_preposition_by_next_word 'с',>

=head3 vo

C<vo> — псевдоним для C<choose_preposition_by_next_word 'в',>

=head1 НЕПОЛАДКИ

Пожалуйста, присылайте сообщения о найденных неполадках и желаемых
возможностях на C<bug-lingua-ru-inflect at rt.cpan.org>, или через
веб-интерфейс на
L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Lingua-RU-Inflect>.
Меня известят, и вы будете автоматически оповещены при устранении
найденных вами неполадок.

=head1 ПОДДЕРЖКА

Вы можете найти документацию к этому модулю с помошью команды  perldoc.

    perldoc Lingua::RU::Inflect

Кроме того, вы можете найти информацию в других местах:

=over 4

=item * RT: CPAN's request tracker

L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Lingua-RU-Inflect>

=item * AnnoCPAN: Аннотированная документация CPAN

L<http://annocpan.org/dist/Lingua-RU-Inflect>

=item * Рейтинги CPAN

L<http://cpanratings.perl.org/d/Lingua-RU-Inflect>

=item * Поиск по CPAN

L<http://search.cpan.org/dist/Lingua-RU-Inflect/>

=item * Публичный репозиторий на github

L<https://github.com/shoorick/lingua-ru-inflect>

=back

=head1 СМ. ТАКЖЕ

L<http://www.imena.org/declension.html>

=head1 АВТОР

Александр Сапожников L<http://shoorick.ru/> L<< E<lt>shoorick@cpan.orgE<gt> >>

=head1 ЛИЦЕНЗИЯ

Эта библиотека является свободным программным обеспечением, вы можете
распространять и модифицировать её на тех же условиях, что и Perl.

=cut

1;
