@@ 224-226 (lines=3) @@ | ||
221 | // exceptions |
|
222 | if (in_array($word, static::$neuterExceptions, true)) { |
|
223 | $forms[Cases::RODIT] = $prefix.'ей'; |
|
224 | } elseif (S::slice($word, -2, -1) == 'и') { |
|
225 | $forms[Cases::RODIT] = $prefix.'й'; |
|
226 | } else { |
|
227 | $forms[Cases::RODIT] = $prefix; |
|
228 | } |
|
229 | } elseif (S::slice($word, -2) == 'ка' && S::slice($word, -3, -2) !== 'и') { // words ending with -ка: чашка, вилка, ложка, тарелка, копейка, батарейка |
|
@@ 232-234 (lines=3) @@ | ||
229 | } elseif (S::slice($word, -2) == 'ка' && S::slice($word, -3, -2) !== 'и') { // words ending with -ка: чашка, вилка, ложка, тарелка, копейка, батарейка |
|
230 | if (S::slice($word, -3, -2) == 'л') { |
|
231 | $forms[Cases::RODIT] = S::slice($word, 0, -2).'ок'; |
|
232 | } elseif (S::slice($word, -3, -2) == 'й') { |
|
233 | $forms[Cases::RODIT] = S::slice($word, 0, -3).'ек'; |
|
234 | } else { |
|
235 | $forms[Cases::RODIT] = S::slice($word, 0, -2).'ек'; |
|
236 | } |
|
237 | } elseif (in_array($last, ['а'], true)) { // обида, ябеда |
|
@@ 243-245 (lines=3) @@ | ||
240 | $forms[Cases::RODIT] = $prefix.'й'; |
|
241 | } elseif (RussianLanguage::isHissingConsonant($last) || ($soft_last && $last != 'й') || in_array(S::slice($word, -2), ['чь', 'сь', 'ть', 'нь'], true)) { |
|
242 | $forms[Cases::RODIT] = $prefix.'ей'; |
|
243 | } elseif ($last == 'й' || S::slice($word, -2) == 'яц') { // месяц |
|
244 | $forms[Cases::RODIT] = $prefix.'ев'; |
|
245 | } else { // (static::isConsonant($last) && !RussianLanguage::isHissingConsonant($last)) |
|
246 | $forms[Cases::RODIT] = $prefix.'ов'; |
|
247 | } |
|
248 |