Skip to content

Commit b7680f9

Browse files
committed
#149 Обрабатываем корректно префикс "деревня" как и остальные
1 parent 1523ee7 commit b7680f9

2 files changed

Lines changed: 15 additions & 3 deletions

File tree

src/Russian/GeographicalNamesInflection.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,9 @@ public static function isMutable($name)
137137
$last_part = S::slice($name,
138138
S::findLastPosition($name, ' ') + 1);
139139

140-
// город N, село N, хутор N, район N, поселок N, округ N, республика N
140+
// город N, село N, хутор N, район N, поселок N, округ N, республика N, деревня N
141141
// N область, N край, N район, N волость
142-
if (in_array($first_part, ['город', 'село', 'хутор', 'район', 'поселок', 'округ', 'республика'], true)
142+
if (in_array($first_part, ['город', 'село', 'хутор', 'район', 'поселок', 'округ', 'республика', 'деревня'], true)
143143
|| in_array($last_part, ['край', 'область', 'район', 'волость'], true)) {
144144
return true;
145145
}
@@ -209,7 +209,8 @@ public static function getCases($name)
209209
if (strpos($name, ' ') !== false) {
210210
$first_part = S::slice($name, 0, S::findFirstPosition($name, ' '));
211211
// город N, село N, хутор N, пгт N
212-
if (in_array($first_part, ['город', 'село', 'хутор', 'пгт', 'район', 'поселок', 'округ', 'республика'],
212+
// @todo вынести список префиксов, чтобы переиспользовать
213+
if (in_array($first_part, ['город', 'село', 'хутор', 'пгт', 'район', 'поселок', 'округ', 'республика', 'деревня'],
213214
true)) {
214215
if ($first_part === 'пгт') {
215216
return array_fill_keys(

tests/Russian/GeographicalNamesInflectionTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,17 @@ public function wordsProvider()
178178
'Республике Крым',
179179
],
180180

181+
// деревня N
182+
[
183+
'деревня Санино',
184+
'деревни Санино',
185+
'деревне Санино',
186+
'деревню Санино',
187+
'деревней Санино',
188+
'деревне Санино',
189+
'деревне Санино',
190+
],
191+
181192
// исключения
182193
[
183194
'Великие Луки',

0 commit comments

Comments
 (0)