Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
LanguageCu
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
42
0.00% covered (danger)
0.00%
0 / 1
 convertGrammar
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
42
1<?php
2/**
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 * http://www.gnu.org/copyleft/gpl.html
17 *
18 * @file
19 */
20
21use MediaWiki\MainConfigNames;
22use MediaWiki\MediaWikiServices;
23
24/**
25 * Old Church Slavonic (Ѩзыкъ словѣньскъ)
26 *
27 * @ingroup Languages
28 */
29class LanguageCu extends Language {
30    public function convertGrammar( $word, $case ) {
31        $grammarForms =
32            MediaWikiServices::getInstance()->getMainConfig()->get( MainConfigNames::GrammarForms );
33
34        if ( isset( $grammarForms['сu'][$case][$word] ) ) {
35            return $grammarForms['сu'][$case][$word];
36        }
37
38        # These rules are not perfect, but they are currently only used for
39        # site names, so it doesn't matter if they are wrong sometimes.
40        # Just add a special case for your site name if necessary.
41
42        # join and array_slice instead mb_substr
43        $ar = [];
44        preg_match_all( '/./us', $word, $ar );
45        if ( !preg_match( "/[a-zA-Z_]/u", $word ) ) {
46            switch ( $case ) {
47                case 'genitive': # родительный падеж
48                    // if ( ( implode( '', array_slice( $ar[0], -4 ) ) == 'вики' )
49                    //    || ( implode( '', array_slice( $ar[0], -4 ) ) == 'Вики' )
50                    // ) {
51                    // }
52
53                    if ( implode( '', array_slice( $ar[0], -2 ) ) == 'ї' ) {
54                        return implode( '', array_slice( $ar[0], 0, -2 ) ) . 'їѩ';
55                    }
56                    break;
57                case 'accusative': # винительный падеж
58                    # stub
59                    break;
60            }
61        }
62
63        return $word;
64    }
65}