From e2e34372d31adc2bd77b60c90d39d71bdc9cde67 Mon Sep 17 00:00:00 2001 From: wapmorgan Date: Wed, 9 Aug 2017 19:01:40 +0300 Subject: [PATCH] +support for composite last names in Russian language --- src/Russian/LastNamesInflection.php | 8 ++++++++ tests/Russian/LastNamesInflectionTest.php | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Russian/LastNamesInflection.php b/src/Russian/LastNamesInflection.php index 1db8691..a4a98d1 100644 --- a/src/Russian/LastNamesInflection.php +++ b/src/Russian/LastNamesInflection.php @@ -19,6 +19,14 @@ public static function isMutable($name, $gender = null) if ($gender === null) { $gender = self::detectGender($name); } + // составная фамилия - разбить на части и проверить по отдельности + if (strpos($name, '-') !== false) { + foreach (explode('-', $name) as $part) { + if (static::isMutable($part, $gender)) + return true; + } + return false; + } if (in_array(S::slice($name, -1), array('а', 'я'))) { return true; diff --git a/tests/Russian/LastNamesInflectionTest.php b/tests/Russian/LastNamesInflectionTest.php index 09d94ef..a6de898 100644 --- a/tests/Russian/LastNamesInflectionTest.php +++ b/tests/Russian/LastNamesInflectionTest.php @@ -70,7 +70,7 @@ public function lastNamesProvider() // foreign names ['Мартен-Люган', NamesInflection::MALE, 'Мартена-Люгана', 'Мартену-Люгану', 'Мартена-Люгана', 'Мартеном-Люганом', 'о Мартене-Люгане'], ['Копусов-Долинин', NamesInflection::MALE, 'Копусова-Долинина', 'Копусову-Долинину', 'Копусова-Долинина', 'Копусовым-Долининым', 'о Копусове-Долинине'], -// ['Кучера-Бози', NamesInflection::MALE, 'Кучера-Бози', 'Кучере-Бози', 'Кучера-Бози', 'Кучером-Бози', 'о Кучере-Бози'], + ['Кучера-Бози', NamesInflection::MALE, 'Кучеры-Бози', 'Кучере-Бози', 'Кучеру-Бози', 'Кучерой-Бози', 'о Кучере-Бози'], ]; }