Skip to content

Commit

Permalink
Fix declension of animated words. fix #44, #43
Browse files Browse the repository at this point in the history
  • Loading branch information
wapmorgan committed Nov 29, 2018
1 parent 38f7c05 commit 210f741
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 11 deletions.
22 changes: 13 additions & 9 deletions src/Russian/NounDeclension.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,25 +35,28 @@ class NounDeclension extends \morphos\BaseInflection implements Cases, Gender
];

protected static $masculineWithSoft = [
'олень',
'конь',
'ячмень',
'путь',
'зверь',
'шкворень',
'пельмень',
'тюлень',
'выхухоль',
'табель',
'рояль',
'шампунь',
'конь',
'лось',
'гвоздь',
'медведь',
'рубль',
'дождь',
'зверь',
'юань',
'олень',
'конь',
'конь',
'лось',
'тюлень',
'выхухоль',
'медведь',
'председатель',
'руководитель',
'заместитель',
];

protected static $masculineWithSoftAndRunAwayVowels = [
Expand Down Expand Up @@ -123,9 +126,10 @@ public static function detectGender($word)
/**
* Определение склонения (по школьной программе) существительного.
* @param $word
* @param bool $animateness
* @return int
*/
public static function getDeclension($word)
public static function getDeclension($word, $animateness = false)
{
$word = S::lower($word);
$last = S::slice($word, -1);
Expand Down
6 changes: 4 additions & 2 deletions tests/Russian/NounDeclensionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ public function wordsProvider()
['дом', false, 2, ['дом', 'дома', 'дому', 'дом', 'домом', 'доме']],
['поле', false, 2, ['поле', 'поля', 'полю', 'поле', 'полем', 'поле']],
['кирпич', false, 2, ['кирпич', 'кирпича', 'кирпичу', 'кирпич', 'кирпичем', 'кирпиче']],
['гений', true, 2, ['гений', 'гения', 'гению', 'гения', 'гением', 'гении']],
['ястреб', true, 2, ['ястреб', 'ястреба', 'ястребу', 'ястреба', 'ястребом', 'ястребе']],
['склон', false, 2, ['склон', 'склона', 'склону', 'склон', 'склоном', 'склоне']],
['сообщение', false, 2, ['сообщение', 'сообщения', 'сообщению', 'сообщение', 'сообщением', 'сообщении']],
['общение', false, 2, ['общение', 'общения', 'общению', 'общение', 'общением', 'общении']],
Expand All @@ -65,6 +63,10 @@ public function wordsProvider()
['путь', false, 2, ['путь', 'пути', 'пути', 'путь', 'путем', 'пути']],
['поселок', false, 2, ['поселок', 'поселка', 'поселку', 'поселок', 'поселком', 'поселке']],
['пирсинг', false, 2, ['пирсинг', 'пирсинга', 'пирсингу', 'пирсинг', 'пирсингом', 'пирсинге']],
['гений', true, 2, ['гений', 'гения', 'гению', 'гения', 'гением', 'гении']],
['ястреб', true, 2, ['ястреб', 'ястреба', 'ястребу', 'ястреба', 'ястребом', 'ястребе']],
['руководитель', true, 2, ['руководитель', 'руководителя', 'руководителю', 'руководителя', 'руководителем', 'руководителе']],
['председатель', true, 2, ['председатель', 'председателя', 'председателю', 'председателя', 'председателем', 'председателе']],
// сущ мужского рода с мягким окончанием
['гвоздь', false, 2, ['гвоздь', 'гвоздя', 'гвоздю', 'гвоздь', 'гвоздем', 'гвозде']],
['день', false, 2, ['день', 'дня', 'дню', 'день', 'днем', 'дне']],
Expand Down
2 changes: 2 additions & 0 deletions tests/Russian/NounPluralizationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ public function pluralWordsProvider()
['новость', false, ['новости', 'новостей', 'новостям', 'новости', 'новостями', 'новостях']],
['тень', false, ['тени', 'теней', 'теням', 'тени', 'тенями', 'тенях']],

['руководитель', true, ['руководителя', 'руководителей', 'руководителям', 'руководителей', 'руководителями', 'руководителях']],

// Адъективное склонение
// мужской род
['выходной', false, ['выходные', 'выходных', 'выходным', 'выходные', 'выходными', 'выходных']],
Expand Down

0 comments on commit 210f741

Please sign in to comment.