From ef42592d415a92deb986bcb1426499fb42571bd7 Mon Sep 17 00:00:00 2001 From: wapmorgan Date: Thu, 3 Aug 2017 20:58:46 +0300 Subject: [PATCH] Inflect foreign middle names as first names in russian --- src/Russian/MiddleNamesInflection.php | 8 ++++---- tests/Russian/FunctionsTest.php | 10 +++++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Russian/MiddleNamesInflection.php b/src/Russian/MiddleNamesInflection.php index f79cb10..d367b21 100644 --- a/src/Russian/MiddleNamesInflection.php +++ b/src/Russian/MiddleNamesInflection.php @@ -28,7 +28,8 @@ public static function isMutable($name, $gender = null) if (in_array(S::slice($name, -2), array('ич', 'на'))) { return true; } - return false; + // if foreign, try it as a name + return FirstNamesInflection::isMutable($name, $gender); } public static function getCase($name, $case, $gender = null) @@ -64,8 +65,7 @@ public static function getCases($name, $gender = null) ); } - // immutable middle name - $name = S::name($name); - return array_fill_keys(array(self::IMENIT, self::RODIT, self::DAT, self::VINIT, self::TVORIT), $name) + array(self::PREDLOJ => self::choosePrepositionByFirstLetter($name, 'об', 'о').' '.$name); + // inflect other middle names as first names (foreign) + return FirstNamesInflection::getCases($name, $gender); } } diff --git a/tests/Russian/FunctionsTest.php b/tests/Russian/FunctionsTest.php index 5d3f98d..c806fbc 100644 --- a/tests/Russian/FunctionsTest.php +++ b/tests/Russian/FunctionsTest.php @@ -32,9 +32,13 @@ public function namesProvider() ['Янаев Осип Андреевич', Gender::MALE, 'Янаева Осипа Андреевича', 'Янаеву Осипу Андреевичу', 'Янаева Осипа Андреевича', 'Янаевым Осипом Андреевичем', 'о Янаеве Осипе Андреевиче'], ['Молодыха Лариса Трофимовна', Gender::FEMALE, 'Молодыхи Ларисы Трофимовны', 'Молодыхе Ларисе Трофимовне', 'Молодыху Ларису Трофимовну', 'Молодыхой Ларисой Трофимовной', 'о Молодыхе Ларисе Трофимовне'], ['Вергун Илья Захарович', Gender::MALE, 'Вергуна Ильи Захаровича', 'Вергуну Илье Захаровичу', 'Вергуна Илью Захаровича', 'Вергуном Ильей Захаровичем', 'о Вергуне Илье Захаровиче'], - ['Горюнова Таисия Романовна', Gender::FEMALE, 'Горюновой Таисии Романовны', 'Горюновой Таисии Романовне', 'Горюнову Таисию Романовну', 'Горюновой Таисией Романовной', 'о Горюновой Таисии Романовне'], - ['Путинцева Антонина Карповна', Gender::FEMALE, 'Путинцевой Антонины Карповны', 'Путинцевой Антонине Карповне', 'Путинцеву Антонину Карповну', 'Путинцевой Антониной Карповной', 'о Путинцевой Антонине Карповне'], - ]; + ['Горюнова Таисия Романовна', Gender::FEMALE, 'Горюновой Таисии Романовны', 'Горюновой Таисии Романовне', 'Горюнову Таисию Романовну', 'Горюновой Таисией Романовной', 'о Горюновой Таисии Романовне'], + ['Путинцева Антонина Карповна', Gender::FEMALE, 'Путинцевой Антонины Карповны', 'Путинцевой Антонине Карповне', 'Путинцеву Антонину Карповну', 'Путинцевой Антониной Карповной', 'о Путинцевой Антонине Карповне'], + + // foreign names + ['Андерсен Ганс Христиан', Gender::MALE, 'Андерсена Ганса Христиана', 'Андерсену Гансу Христиану', 'Андерсена Ганса Христиана', 'Андерсеном Гансом Христианом', 'об Андерсене Гансе Христиане'], + ['Милн Алан Александр', Gender::MALE, 'Милна Алана Александра', 'Милну Алану Александру', 'Милна Алана Александра', 'Милном Аланом Александром', 'о Милне Алане Александре'], + ]; } /**