Skip to content

Commit

Permalink
work on #122
Browse files Browse the repository at this point in the history
  • Loading branch information
wapmorgan committed Feb 5, 2023
1 parent bf78a7f commit 44968b3
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 9 deletions.
14 changes: 8 additions & 6 deletions src/Russian/LastNamesInflection.php
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ public static function detectGender($name)
* @param null|string $gender
* @return string[]
* @phpstan-return array<string, string>
* @throws \Exception
*/
public static function getCases($name, $gender = null)
{
Expand Down Expand Up @@ -164,18 +165,19 @@ public static function getCases($name, $gender = null)
static::TVORIT => $prefix . 'им',
static::PREDLOJ => $prefix . 'ом',
];
// Верхний / Убогий / Толстой
// Верхнего / Убогого / Толстого
// Верхнему / Убогому / Толстому
// Верхним / Убогим / Толстым
// О Верхнем / Об Убогом / О Толстом
}

// Верхний / Убогий / Толстой / Цой
// Верхнего / Убогого / Толстого / Цоя
// Верхнему / Убогому / Толстому / Цою
// Верхним / Убогим / Толстым / Цоя
// о Верхнем / об Убогом / о Толстом / Цоем
// Верхнем / Убогом / о Толстом / Цое
if (in_array(S::slice($name, -2), ['ой', 'ый', 'ий'], true)) {
$prefix = S::name(S::slice($name, 0, -2));
return [
static::IMENIT => S::name($name),
static::RODIT => $prefix . 'ого',
static::RODIT => $prefix . RussianLanguage::chooseEndingBySonority($prefix, 'оя', 'ого'),
static::DAT => $prefix . 'ому',
static::VINIT => $prefix . 'ого',
static::TVORIT => $prefix . 'ым',
Expand Down
4 changes: 2 additions & 2 deletions src/Russian/RussianLanguage.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ class RussianLanguage
/**
* @var string[] Глухие согласные
*/
public static $deafConsonants = ['п', 'ф', 'к', 'т', 'с', 'ш', 'х', 'ч', 'щ'];
public static $deafConsonants = ['п', 'ф', 'к', 'т', 'с', 'ш', 'х', 'ч', 'ц', 'щ'];

/**
* @var string[] Союзы
Expand Down Expand Up @@ -320,7 +320,7 @@ public static function isVowel($char)
*/
public static function chooseEndingBySonority($word, $ifSonorous, $ifDeaf)
{
$last = S::slice($word, -1);
$last = S::slice(S::lower($word), -1);
if (static::isSonorousConsonant($last)) {
return $ifSonorous;
}
Expand Down
4 changes: 3 additions & 1 deletion tests/Russian/LastNamesInflectionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ public function lastNamesProvider()
['Грицай', NamesInflection::MALE, 'Грицая', 'Грицаю', 'Грицая', 'Грицаем', 'Грицае'],
['Прожога', NamesInflection::MALE, 'Прожоги', 'Прожоге', 'Прожогу', 'Прожогой', 'Прожоге'],
['Мазепа', NamesInflection::MALE, 'Мазепы', 'Мазепе', 'Мазепу', 'Мазепой', 'Мазепе'],

['Цой', NamesInflection::MALE, 'Цоя', 'Цою', 'Цоя', 'Цоем', 'Цое'],
['Лукелий', NamesInflection::MALE, 'Лукелия', 'Лукелию', 'Ликелия', 'Лукелием', 'Ликелии'],

['Смирнова', NamesInflection::FEMALE, 'Смирновой', 'Смирновой', 'Смирнову', 'Смирновой', 'Смирновой'],
['Кромская', NamesInflection::FEMALE, 'Кромской', 'Кромской', 'Кромскую', 'Кромской', 'Кромской'],
Expand Down Expand Up @@ -114,6 +115,7 @@ public function immutableNamesProvider()
['Фоминых', NamesInflection::MALE],
['Хитрово', NamesInflection::MALE],
['Бози', NamesInflection::MALE],
['Цой', NamesInflection::FEMALE],
];
}
}

0 comments on commit 44968b3

Please sign in to comment.