diff --git a/src/Russian/LastNamesInflection.php b/src/Russian/LastNamesInflection.php index 70fe89d..7702d2c 100644 --- a/src/Russian/LastNamesInflection.php +++ b/src/Russian/LastNamesInflection.php @@ -219,6 +219,19 @@ public static function getCases($name, $gender = null) ]; } + if (S::length($name) > 3 && in_array(S::slice($name, -2), ['ок'], true)) { + $prefix = S::name(S::slice($name, 0, -2)) . S::slice($name, -1); + + return [ + static::IMENIT => S::name($name), + static::RODIT => $prefix . 'а', + static::DAT => $prefix . 'у', + static::VINIT => $prefix . 'а', + static::TVORIT => $prefix . 'ом', + static::PREDLOJ => $prefix . 'е', + ]; + } + } else { if (in_array(S::slice($name, -3), ['ова', 'ева', 'ина', 'ына', 'ёва'], true)) { $prefix = S::name(S::slice($name, 0, -1)); diff --git a/tests/Russian/LastNamesInflectionTest.php b/tests/Russian/LastNamesInflectionTest.php index 7336684..d116337 100644 --- a/tests/Russian/LastNamesInflectionTest.php +++ b/tests/Russian/LastNamesInflectionTest.php @@ -78,6 +78,9 @@ public function lastNamesProvider() // ['Зоя', NamesInflection::FEMALE, 'Зои', 'Зое', 'Зою', 'Зоей', 'Зое'], // ['Молодыха', NamesInflection::FEMALE, 'Молодыхи', 'Молодыхе', 'Молодыху', 'Молодыхой', 'Молодыхе'], ['Стальная', NamesInflection::FEMALE, 'Стальной', 'Стальной', 'Стальную', 'Стальной', 'Стальной'], + ['Янушонок', NamesInflection::MALE, 'Янушонка', 'Янушонку', 'Янушонка', 'Янушонком', 'Янушонке'], + ['Оборок', NamesInflection::MALE, 'Оборка', 'Оборку', 'Оборка', 'Оборком', 'Оборке'], + ['Бок', NamesInflection::MALE, 'Бока', 'Боку', 'Бока', 'Боком', 'Боке'], [ 'Завгородняя', NamesInflection::FEMALE,