Completed
Push — develop ( 0d6c46...c341e4 )
by Greg
15:25 queued 09:07
created

LanguageId::values()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 90
Code Lines 73

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 73
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 90
rs 8.589

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
/**
4
 * webtrees: online genealogy
5
 * Copyright (C) 2020 webtrees development team
6
 * This program is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
 * GNU General Public License for more details.
14
 * You should have received a copy of the GNU General Public License
15
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16
 */
17
18
declare(strict_types=1);
19
20
namespace Fisharebest\Webtrees\GedcomElements;
21
22
use Fisharebest\Localization\Locale\LocaleAf;
23
use Fisharebest\Localization\Locale\LocaleAm;
24
use Fisharebest\Localization\Locale\LocaleAng;
25
use Fisharebest\Localization\Locale\LocaleAr;
26
use Fisharebest\Localization\Locale\LocaleAs;
27
use Fisharebest\Localization\Locale\LocaleBe;
28
use Fisharebest\Localization\Locale\LocaleBg;
29
use Fisharebest\Localization\Locale\LocaleBn;
30
use Fisharebest\Localization\Locale\LocaleBo;
31
use Fisharebest\Localization\Locale\LocaleCa;
32
use Fisharebest\Localization\Locale\LocaleCaEsValencia;
33
use Fisharebest\Localization\Locale\LocaleCs;
34
use Fisharebest\Localization\Locale\LocaleCu;
35
use Fisharebest\Localization\Locale\LocaleDa;
36
use Fisharebest\Localization\Locale\LocaleDe;
37
use Fisharebest\Localization\Locale\LocaleEl;
38
use Fisharebest\Localization\Locale\LocaleEn;
39
use Fisharebest\Localization\Locale\LocaleEo;
40
use Fisharebest\Localization\Locale\LocaleEs;
41
use Fisharebest\Localization\Locale\LocaleEt;
42
use Fisharebest\Localization\Locale\LocaleFa;
43
use Fisharebest\Localization\Locale\LocaleFi;
44
use Fisharebest\Localization\Locale\LocaleFo;
45
use Fisharebest\Localization\Locale\LocaleFr;
46
use Fisharebest\Localization\Locale\LocaleGu;
47
use Fisharebest\Localization\Locale\LocaleHaw;
48
use Fisharebest\Localization\Locale\LocaleHe;
49
use Fisharebest\Localization\Locale\LocaleHi;
50
use Fisharebest\Localization\Locale\LocaleHu;
51
use Fisharebest\Localization\Locale\LocaleHy;
52
use Fisharebest\Localization\Locale\LocaleId;
53
use Fisharebest\Localization\Locale\LocaleIs;
54
use Fisharebest\Localization\Locale\LocaleIt;
55
use Fisharebest\Localization\Locale\LocaleJa;
56
use Fisharebest\Localization\Locale\LocaleKa;
57
use Fisharebest\Localization\Locale\LocaleKm;
58
use Fisharebest\Localization\Locale\LocaleKn;
59
use Fisharebest\Localization\Locale\LocaleKo;
60
use Fisharebest\Localization\Locale\LocaleKok;
61
use Fisharebest\Localization\Locale\LocaleLo;
62
use Fisharebest\Localization\Locale\LocaleLt;
63
use Fisharebest\Localization\Locale\LocaleLv;
64
use Fisharebest\Localization\Locale\LocaleMk;
65
use Fisharebest\Localization\Locale\LocaleMl;
66
use Fisharebest\Localization\Locale\LocaleMr;
67
use Fisharebest\Localization\Locale\LocaleMy;
68
use Fisharebest\Localization\Locale\LocaleNe;
69
use Fisharebest\Localization\Locale\LocaleNl;
70
use Fisharebest\Localization\Locale\LocaleNn;
71
use Fisharebest\Localization\Locale\LocaleOr;
72
use Fisharebest\Localization\Locale\LocalePa;
73
use Fisharebest\Localization\Locale\LocalePl;
74
use Fisharebest\Localization\Locale\LocalePs;
75
use Fisharebest\Localization\Locale\LocalePt;
76
use Fisharebest\Localization\Locale\LocaleRo;
77
use Fisharebest\Localization\Locale\LocaleRu;
78
use Fisharebest\Localization\Locale\LocaleSk;
79
use Fisharebest\Localization\Locale\LocaleSl;
80
use Fisharebest\Localization\Locale\LocaleSq;
81
use Fisharebest\Localization\Locale\LocaleSr;
82
use Fisharebest\Localization\Locale\LocaleSv;
83
use Fisharebest\Localization\Locale\LocaleTa;
84
use Fisharebest\Localization\Locale\LocaleTe;
85
use Fisharebest\Localization\Locale\LocaleTh;
86
use Fisharebest\Localization\Locale\LocaleTl;
87
use Fisharebest\Localization\Locale\LocaleTr;
88
use Fisharebest\Localization\Locale\LocaleUk;
89
use Fisharebest\Localization\Locale\LocaleUr;
90
use Fisharebest\Localization\Locale\LocaleVi;
91
use Fisharebest\Localization\Locale\LocaleYi;
92
use Fisharebest\Localization\Locale\LocaleYue;
93
94
use function preg_replace_callback;
95
96
/**
97
 * LANGUAGE_ID := {Size=1:15}
98
 * The human language in which the data in the transmission is normally read or
99
 * written. It is used primarily by programs to select language-specific
100
 * sorting sequences and phonetic name matching algorithms.
101
 */
102
class LanguageId extends AbstractElement
103
{
104
    /**
105
     * Convert a value to a canonical form.
106
     *
107
     * @param string $value
108
     *
109
     * @return string
110
     */
111
    public function canonical(string $value): string
112
    {
113
        return preg_replace_callback('/\w+/', static function (array $match): string {
114
            return ucwords($match[0]);
115
        }, strtolower(parent::canonical($value)));
116
    }
117
118
119
    /**
120
     * A list of controlled values for this element
121
     *
122
     * @return array<int|string,string>
123
     */
124
    public function values(): array
125
    {
126
        return [
127
            ''              => '',
128
            'Afrikaans'     => (new LocaleAf())->endonym(),
129
            'Albanian'      => (new LocaleSq())->endonym(),
130
            'Amharic'       => (new LocaleAm())->endonym(),
131
            'Anglo-Saxon'   => (new LocaleAng())->endonym(),
132
            'Arabic'        => (new LocaleAr())->endonym(),
133
            'Armenian'      => (new LocaleHy())->endonym(),
134
            'Assamese'      => (new LocaleAs())->endonym(),
135
            'Belorusian'    => (new LocaleBe())->endonym(),
136
            'Bengali'       => (new LocaleBn())->endonym(),
137
            //'Braj' => (new LocaleBra())->endonym(),
138
            'Bulgarian'     => (new LocaleBg())->endonym(),
139
            'Burmese'       => (new LocaleMy())->endonym(),
140
            'Cantonese'     => (new LocaleYue())->endonym(),
141
            'Catalan'       => (new LocaleCaEsValencia())->endonym(),
142
            'Catalan_Spn'   => (new LocaleCa())->endonym(),
143
            'Church-Slavic' => (new LocaleCu())->endonym(),
144
            'Czech'         => (new LocaleCs())->endonym(),
145
            'Danish'        => (new LocaleDa())->endonym(),
146
            //'Dogri' => (new LocaleDoi())->endonym(),
147
            'Dutch'         => (new LocaleNl())->endonym(),
148
            'English'       => (new LocaleEn())->endonym(),
149
            'Esperanto'     => (new LocaleEo())->endonym(),
150
            'Estonian'      => (new LocaleEt())->endonym(),
151
            'Faroese'       => (new LocaleFo())->endonym(),
152
            'Finnish'       => (new LocaleFi())->endonym(),
153
            'French'        => (new LocaleFr())->endonym(),
154
            'Georgian'      => (new LocaleKa())->endonym(),
155
            'German'        => (new LocaleDe())->endonym(),
156
            'Greek'         => (new LocaleEl())->endonym(),
157
            'Gujarati'      => (new LocaleGu())->endonym(),
158
            'Hawaiian'      => (new LocaleHaw())->endonym(),
159
            'Hebrew'        => (new LocaleHe())->endonym(),
160
            'Hindi'         => (new LocaleHi())->endonym(),
161
            'Hungarian'     => (new LocaleHu())->endonym(),
162
            'Icelandic'     => (new LocaleIs())->endonym(),
163
            'Indonesian'    => (new LocaleId())->endonym(),
164
            'Italian'       => (new LocaleIt())->endonym(),
165
            'Japanese'      => (new LocaleJa())->endonym(),
166
            'Kannada'       => (new LocaleKn())->endonym(),
167
            'Khmer'         => (new LocaleKm())->endonym(),
168
            'Konkani'       => (new LocaleKok())->endonym(),
169
            'Korean'        => (new LocaleKo())->endonym(),
170
            //'Lahnda' => (new LocaleLah())->endonym(),
171
            'Lao'           => (new LocaleLo())->endonym(),
172
            'Latvian'       => (new LocaleLv())->endonym(),
173
            'Lithuanian'    => (new LocaleLt())->endonym(),
174
            'Macedonian'    => (new LocaleMk())->endonym(),
175
            //'Maithili' => (new LocaleMai())->endonym(),
176
            'Malayalam'     => (new LocaleMl())->endonym(),
177
            //'Mandrin' => (new LocaleCmn())->endonym(),
178
            //'Manipuri' => (new LocaleMni())->endonym(),
179
            'Marathi'       => (new LocaleMr())->endonym(),
180
            //'Mewari' => (new LocaleMtr())->endonym(),
181
            //'Navaho' => (new LocaleNv())->endonym(),
182
            'Nepali'        => (new LocaleNe())->endonym(),
183
            'Norwegian'     => (new LocaleNn())->endonym(),
184
            'Oriya'         => (new LocaleOr())->endonym(),
185
            //'Pahari' => (new LocalePhr())->endonym(),
186
            //'Pali' => (new LocalePi())->endonym(),
187
            'Panjabi'       => (new LocalePa())->endonym(),
188
            'Persian'       => (new LocaleFa())->endonym(),
189
            'Polish'        => (new LocalePl())->endonym(),
190
            'Portuguese'    => (new LocalePt())->endonym(),
191
            //'Prakrit' => (new LocalePra())->endonym(),
192
            'Pusto'         => (new LocalePs())->endonym(),
193
            //'Rajasthani' => (new LocaleRaj())->endonym(),
194
            'Romanian'      => (new LocaleRo())->endonym(),
195
            'Russian'       => (new LocaleRu())->endonym(),
196
            //'Sanskrit' => (new LocaleSa())->endonym(),
197
            'Serb'          => (new LocaleSr())->endonym(),
198
            //'Serbo_Croa' => (new LocaleHbs())->endonym(),
199
            'Slovak'        => (new LocaleSk())->endonym(),
200
            'Slovene'       => (new LocaleSl())->endonym(),
201
            'Spanish'       => (new LocaleEs())->endonym(),
202
            'Swedish'       => (new LocaleSv())->endonym(),
203
            'Tagalog'       => (new LocaleTl())->endonym(),
204
            'Tamil'         => (new LocaleTa())->endonym(),
205
            'Telugu'        => (new LocaleTe())->endonym(),
206
            'Thai'          => (new LocaleTh())->endonym(),
207
            'Tibetan'       => (new LocaleBo())->endonym(),
208
            'Turkish'       => (new LocaleTr())->endonym(),
209
            'Ukrainian'     => (new LocaleUk())->endonym(),
210
            'Urdu'          => (new LocaleUr())->endonym(),
211
            'Vietnamese'    => (new LocaleVi())->endonym(),
212
            //'Wendic' => (new LocaleWen())->endonym(),
213
            'Yiddish'       => (new LocaleYi())->endonym(),
214
        ];
215
    }
216
}
217