Skip to content

Commit

Permalink
Fix #61: Крым
Browse files Browse the repository at this point in the history
  • Loading branch information
wapmorgan committed Dec 29, 2019
1 parent 945e073 commit 8316397
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 61 deletions.
71 changes: 10 additions & 61 deletions src/Russian/GeographicalNamesInflection.php
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,12 @@ public static function getCases($name)

// Россошь
case 'шь':
// Пермь, Кемь
case 'мь':
// Рязань, Назрань
case 'нь':
// Керчь
case 'чь':
$prefix = S::name(S::slice($name, 0, -1));
return [
static::IMENIT => $prefix.'ь',
Expand Down Expand Up @@ -271,32 +277,10 @@ public static function getCases($name)
static::PREDLOJ => $prefix . 'ах',
];

// Пермь, Кемь
case 'мь':
$prefix = S::name(S::slice($name, 0, -1));
return [
static::IMENIT => $prefix . 'ь',
static::RODIT => $prefix . 'и',
static::DAT => $prefix . 'и',
static::VINIT => $prefix . 'ь',
static::TVORIT => $prefix . 'ью',
static::PREDLOJ => $prefix . 'и',
];

// Рязань, Назрань
case 'нь':
$prefix = S::name(S::slice($name, 0, -1));
return [
static::IMENIT => $prefix . 'ь',
static::RODIT => $prefix . 'и',
static::DAT => $prefix . 'и',
static::VINIT => $prefix . 'ь',
static::TVORIT => $prefix . 'ью',
static::PREDLOJ => $prefix . 'и',
];

// Набережные
case 'ые':
// Великие
case 'ие':
$prefix = S::name(S::slice($name, 0, -1));
return [
static::IMENIT => $prefix . 'е',
Expand All @@ -323,42 +307,6 @@ public static function getCases($name)
static::PREDLOJ => $prefix . 'ах',
];

// Великие
case 'ие':
$prefix = S::name(S::slice($name, 0, -1));
return [
static::IMENIT => $prefix.'е',
static::RODIT => $prefix.'х',
static::DAT => $prefix.'м',
static::VINIT => $prefix.'е',
static::TVORIT => $prefix.'ми',
static::PREDLOJ => $prefix.'х',
];

// Керчь
case 'чь':
$prefix = S::name(S::slice($name, 0, -1));
return [
static::IMENIT => $prefix.'ь',
static::RODIT => $prefix.'и',
static::DAT => $prefix.'и',
static::VINIT => $prefix.'ь',
static::TVORIT => $prefix.'ью',
static::PREDLOJ => $prefix.'и',
];

//
case 'чи':
$prefix = S::name(S::slice($name, 0, -1));
return [
static::IMENIT => $prefix.'и',
static::RODIT => $prefix.'ей',
static::DAT => $prefix.'ам',
static::VINIT => $prefix.'и',
static::TVORIT => $prefix.'ами',
static::PREDLOJ => $prefix.'ах',
];

// Глубокое
case 'ое':
$prefix = S::name(S::slice($name, 0, -2));
Expand Down Expand Up @@ -453,7 +401,7 @@ public static function getCases($name)
static::DAT => $prefix . 'у',
static::VINIT => S::name($name),
static::TVORIT => $prefix . (static::isVelarConsonant(S::slice($name, -2, -1)) ? 'ем' : 'ом'),
static::PREDLOJ => $prefix . 'е',
static::PREDLOJ => $prefix . ($name === 'крым' ? 'у' : 'е'),
];
}

Expand All @@ -468,6 +416,7 @@ public static function getCases($name)
elseif (in_array(S::slice($name, -2), $suffixes, true)) {
$prefix = S::name($name);
}

return [
static::IMENIT => S::name($name),
static::RODIT => $prefix.'а',
Expand Down
1 change: 1 addition & 0 deletions tests/Russian/GeographicalNamesInflectionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ public function wordsProvider()
['Египет', 'Египта', 'Египту', 'Египет', 'Египтом', 'Египте'],
['Столбцы', 'Столбцов', 'Столбцам', 'Столбцы', 'Столбцами', 'Столбцах'],
['Ханты-Мансийск', 'Ханты-Мансийска', 'Ханты-Мансийску', 'Ханты-Мансийск', 'Ханты-Мансийском', 'Ханты-Мансийске'],
['Крым', 'Крыма', 'Крыму', 'Крым', 'Крымом', 'Крыму'],

// с беглой гласной
['Торжок', 'Торжка', 'Торжку', 'Торжок', 'Торжком', 'Торжке'],
Expand Down

0 comments on commit 8316397

Please sign in to comment.