From b5bb9d0a80fd69fdfba22581395cfb1012696be7 Mon Sep 17 00:00:00 2001 From: wapmorgan Date: Sat, 27 Oct 2018 00:31:01 +0300 Subject: [PATCH] =?UTF-8?q?Fix=20#38=20-=D0=B8=D0=BA=D0=B0=20nouns=20plura?= =?UTF-8?q?lization?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Russian/NounPluralization.php | 2 +- tests/Russian/NounDeclensionTest.php | 1 + tests/Russian/NounPluralizationTest.php | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Russian/NounPluralization.php b/src/Russian/NounPluralization.php index 5c4012f..37cba02 100644 --- a/src/Russian/NounPluralization.php +++ b/src/Russian/NounPluralization.php @@ -208,7 +208,7 @@ protected static function declinateSubstative($word, $animateness) } else { $forms[Cases::RODIT] = $prefix; } - } elseif (S::slice($word, -2) == 'ка') { // words ending with -ка: чашка, вилка, ложка, тарелка, копейка, батарейка + } elseif (S::slice($word, -2) == 'ка' && S::slice($word, -3, -2) !== 'и') { // words ending with -ка: чашка, вилка, ложка, тарелка, копейка, батарейка if (S::slice($word, -3, -2) == 'л') { $forms[Cases::RODIT] = S::slice($word, 0, -2).'ок'; } elseif (S::slice($word, -3, -2) == 'й') { diff --git a/tests/Russian/NounDeclensionTest.php b/tests/Russian/NounDeclensionTest.php index 7fa2daf..35a1b57 100644 --- a/tests/Russian/NounDeclensionTest.php +++ b/tests/Russian/NounDeclensionTest.php @@ -42,6 +42,7 @@ public function wordsProvider() ['копейка', false, 1, ['копейка', 'копейки', 'копейке', 'копейку', 'копейкой', 'копейке']], ['батарейка', false, 1, ['батарейка', 'батарейки', 'батарейке', 'батарейку', 'батарейкой', 'батарейке']], ['гривна', false, 1, ['гривна', 'гривны', 'гривне', 'гривну', 'гривной', 'гривне']], + ['фабрика', false, 1, ['фабрика', 'фабрики', 'фабрике', 'фабрику', 'фабрикой', 'фабрике']], ['дом', false, 2, ['дом', 'дома', 'дому', 'дом', 'домом', 'доме']], ['поле', false, 2, ['поле', 'поля', 'полю', 'поле', 'полем', 'поле']], diff --git a/tests/Russian/NounPluralizationTest.php b/tests/Russian/NounPluralizationTest.php index e6299a7..7a3f495 100644 --- a/tests/Russian/NounPluralizationTest.php +++ b/tests/Russian/NounPluralizationTest.php @@ -85,6 +85,7 @@ public function pluralWordsProvider() ['халат', false, ['халаты', 'халатов', 'халатам', 'халаты', 'халатами', 'халатах']], ['прожектор', false, ['прожекторы', 'прожекторов', 'прожекторам', 'прожекторы', 'прожекторами', 'прожекторах']], ['пирсинг', false, ['пирсинги', 'пирсингов', 'пирсингам', 'пирсинги', 'пирсингами', 'пирсингах']], + ['фабрика', false, ['фабрики', 'фабрик', 'фабрикам', 'фабрики', 'фабриками', 'фабриках']], ['копейка', false, ['копейки', 'копеек', 'копейкам', 'копейки', 'копейками', 'копейках']], ['батарейка', false, ['батарейки', 'батареек', 'батарейкам', 'батарейки', 'батарейками', 'батарейках']],