@@ 37-39 (lines=3) @@ | ||
34 | public static function isMutable($name, $gender = null) |
|
35 | { |
|
36 | $name = S::lower($name); |
|
37 | if (in_array(S::slice($name, -2), ['ич', 'на'], true)) { |
|
38 | return true; |
|
39 | } |
|
40 | ||
41 | // it's foreign middle name, inflect it as a first name |
|
42 | return FirstNamesInflection::isMutable($name, $gender); |
@@ 108-110 (lines=3) @@ | ||
105 | return true; |
|
106 | } elseif (S::slice($name, -1) == 'й') { |
|
107 | return true; |
|
108 | } else if (in_array(S::slice($name, -2), ['ло', 'ко'], true)) { |
|
109 | return true; |
|
110 | } |
|
111 | } else if ($gender === static::FEMALE) { |
|
112 | // soft consonant |
|
113 | if (S::lower(S::slice($name, -1)) == 'ь' && static::isConsonant(S::slice($name, -2, -1))) { |
@@ 38-40 (lines=3) @@ | ||
35 | return false; |
|
36 | } |
|
37 | ||
38 | if (in_array(S::slice($name, -1), ['а', 'я'], true)) { |
|
39 | return true; |
|
40 | } |
|
41 | ||
42 | // Несклоняемые фамилии независимо от пола (Токаревских) |
|
43 | if (in_array(S::slice($name, -2), ['их'], true)) |
|
@@ 43-44 (lines=2) @@ | ||
40 | } |
|
41 | ||
42 | // Несклоняемые фамилии независимо от пола (Токаревских) |
|
43 | if (in_array(S::slice($name, -2), ['их'], true)) |
|
44 | return false; |
|
45 | ||
46 | if ($gender == static::MALE) { |
|
47 | // Несклоняемые фамилии (Фоминых, Седых / Стецко, Писаренко) |
|
@@ 48-49 (lines=2) @@ | ||
45 | ||
46 | if ($gender == static::MALE) { |
|
47 | // Несклоняемые фамилии (Фоминых, Седых / Стецко, Писаренко) |
|
48 | if (in_array(S::slice($name, -2), ['ых', 'ко'], true)) |
|
49 | return false; |
|
50 | ||
51 | // Несклоняемые, образованные из родительного падежа личного или прозвищного имени главы семьи |
|
52 | // суффиксы: ово, аго |
|
@@ 53-54 (lines=2) @@ | ||
50 | ||
51 | // Несклоняемые, образованные из родительного падежа личного или прозвищного имени главы семьи |
|
52 | // суффиксы: ово, аго |
|
53 | if (in_array(S::slice($name, -3), ['ово', 'аго'], true)) |
|
54 | return false; |
|
55 | ||
56 | // Типичные суффикс мужских фамилий |
|
57 | if (in_array(S::slice($name, -2), ['ов', 'ев', 'ин', 'ын', 'ий', 'ой'], true)) { |
|
@@ 71-76 (lines=6) @@ | ||
68 | return true; |
|
69 | } |
|
70 | ||
71 | } else { |
|
72 | // Типичные суффиксы женских фамилий |
|
73 | if (in_array(S::slice($name, -2), ['ва', 'на', 'ая'], true)) { |
|
74 | return true; |
|
75 | } |
|
76 | } |
|
77 | ||
78 | return false; |
|
79 | } |
@@ 288-289 (lines=2) @@ | ||
285 | public static function in($word) |
|
286 | { |
|
287 | $normalized = trim(S::lower($word)); |
|
288 | if (in_array(S::slice($normalized, 0, 1), ['в', 'ф'], true)) |
|
289 | return 'во '.$word; |
|
290 | return 'в '.$word; |
|
291 | } |
|
292 |