Passed
Push — master ( 4f2992...0b6add )
by Mihai
01:32
created

RuleFactory::make()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Polyglot\Pluralization;
6
7
use Polyglot\Pluralization\Rules\Arabic;
8
use Polyglot\Pluralization\Rules\BosnianSerbian;
9
use Polyglot\Pluralization\Rules\Chinese;
10
use Polyglot\Pluralization\Rules\Croatian;
11
use Polyglot\Pluralization\Rules\Czech;
12
use Polyglot\Pluralization\Rules\French;
13
use Polyglot\Pluralization\Rules\German;
14
use Polyglot\Pluralization\Rules\Icelandic;
15
use Polyglot\Pluralization\Rules\Lithuanian;
16
use Polyglot\Pluralization\Rules\Polish;
17
use Polyglot\Pluralization\Rules\RuleInterface;
18
use Polyglot\Pluralization\Rules\Russian;
19
use Polyglot\Pluralization\Rules\Slovenian;
20
21
/**
22
 * Rule factory which crafts a pluralization rule depending on the provided locale.
23
 *
24
 * @package Polyglot/Pluralization
25
 * @author  Mihai MATEI <[email protected]>
26
 */
27
class RuleFactory
28
{
29
    /**
30
     * @var array
31
     */
32
    private static $localesRulesMapping = [
33
        'ar' => Arabic::class,
34
        'bs-Latn-BA' => BosnianSerbian::class,
35
        'bs-Cyrl-BA' => BosnianSerbian::class,
36
        'srl-RS' => BosnianSerbian::class,
37
        'sr-RS' => BosnianSerbian::class,
38
        'id' => Chinese::class,
39
        'id-ID' => Chinese::class,
40
        'ja' => Chinese::class,
41
        'ko' => Chinese::class,
42
        'ko-KR' => Chinese::class,
43
        'lo' => Chinese::class,
44
        'ms' => Chinese::class,
45
        'th' => Chinese::class,
46
        'th-TH' => Chinese::class,
47
        'zh' => Chinese::class,
48
        'hr' => Croatian::class,
49
        'hr-HR' => Croatian::class,
50
        'fr' => French::class,
51
        'tl' => French::class,
52
        'pt-br' => French::class,
53
        'ru' => Russian::class,
54
        'ru-RU' => Russian::class,
55
        'lt' => Lithuanian::class,
56
        'cs' => Czech::class,
57
        'cs-CZ' => Czech::class,
58
        'sk' => Czech::class,
59
        'pl' => Polish::class,
60
        'is' => Icelandic::class,
61
        'sl-SL' => Slovenian::class,
62
    ];
63
64
    /**
65
     * Make a new pluralization rule.
66
     *
67
     * @param string $locale
68
     *
69
     * @return RuleInterface
70
     */
71
    public static function make(string $locale): RuleInterface
72
    {
73
        $rule = self::$localesRulesMapping[$locale] ?? German::class;
74
75
        return new $rule();
76
    }
77
}