Code Duplication    Length = 2-6 lines in 8 locations

src/Russian/FirstNamesInflection.php 1 location

@@ 101-103 (lines=3) @@
98
                return true;
99
            } elseif (S::slice($name, -1) == 'й') {
100
                return true;
101
            } else if (in_array(S::slice($name, -2), ['ло', 'ко'], true)) {
102
                return true;
103
            }
104
        } else if ($gender === static::FEMALE) {
105
            // soft consonant
106
            if (S::lower(S::slice($name, -1)) == 'ь' && static::isConsonant(S::slice($name, -2, -1))) {

src/Russian/LastNamesInflection.php 5 locations

@@ 36-38 (lines=3) @@
33
            return false;
34
        }
35
36
        if (in_array(S::slice($name, -1), ['а', 'я'], true)) {
37
            return true;
38
        }
39
        
40
        // Несклоняемые фамилии независимо от пола (Токаревских)
41
        if (in_array(S::slice($name, -2), ['их'], true))
@@ 41-42 (lines=2) @@
38
        }
39
        
40
        // Несклоняемые фамилии независимо от пола (Токаревских)
41
        if (in_array(S::slice($name, -2), ['их'], true))
42
            return false;
43
44
        if ($gender == static::MALE) {
45
            // Несклоняемые фамилии (Фоминых, Седых / Стецко, Писаренко)
@@ 46-47 (lines=2) @@
43
44
        if ($gender == static::MALE) {
45
            // Несклоняемые фамилии (Фоминых, Седых / Стецко, Писаренко)
46
            if (in_array(S::slice($name, -2), ['ых', 'ко'], true))
47
                return false;
48
49
            // Несклоняемые, образованные из родительного падежа личного или прозвищного имени главы семьи
50
            // суффиксы: ово, аго
@@ 51-52 (lines=2) @@
48
49
            // Несклоняемые, образованные из родительного падежа личного или прозвищного имени главы семьи
50
            // суффиксы: ово, аго
51
            if (in_array(S::slice($name, -3), ['ово', 'аго'], true))
52
                return false;
53
54
            // Типичные суффикс мужских фамилий
55
            if (in_array(S::slice($name, -2), ['ов', 'ев', 'ин', 'ын', 'ий', 'ой'], true)) {
@@ 69-74 (lines=6) @@
66
                return true;
67
            }
68
69
        } else {
70
            // Типичные суффиксы женских фамилий
71
            if (in_array(S::slice($name, -2), ['ва', 'на', 'ая'], true)) {
72
                return true;
73
            }
74
        }
75
76
        return false;
77
    }

src/Russian/MiddleNamesInflection.php 1 location

@@ 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);

src/Russian/RussianLanguage.php 1 location

@@ 281-282 (lines=2) @@
278
    public static function in($word)
279
    {
280
        $normalized = trim(S::lower($word));
281
        if (in_array(S::slice($normalized, 0, 1), ['в', 'ф'], true))
282
            return 'во '.$word;
283
        return 'в '.$word;
284
    }
285