Completed
Push — v4.0-dev ( 627b53 )
by Oscar
03:24
created

PhpArray   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 8
c 3
b 0
f 0
lcom 0
cbo 2
dl 0
loc 56
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A toString() 0 6 1
A toArray() 0 9 4
A buildArray() 0 19 3
1
<?php
2
3
namespace Gettext\Generators;
4
5
use Gettext\Translations;
6
7
class PhpArray extends Generator implements GeneratorInterface
8
{
9
    /**
10
     * {@inheritdoc}
11
     */
12
    public static function toString(Translations $translations)
13
    {
14
        $array = self::toArray($translations);
15
16
        return '<?php return '.var_export($array, true).'; ?>';
17
    }
18
19
    /**
20
     * Generates an array with the translations.
21
     *
22
     * @param Translations $translations
23
     *
24
     * @return array
25
     */
26
    public static function toArray(Translations $translations)
27
    {
28
        return [
29
            'domain' => $translations->getDomain() ?: 'messages',
30
            'lang' => $translations->getLanguage() ?: 'en',
31
            'plural-forms' => $translations->getHeader('Plural-Forms') ?: 'nplurals=2; plural=(n != 1);',
32
            'messages' => static::buildArray($translations)
33
        ];
34
    }
35
36
    /**
37
     * Generates an array with all translations.
38
     * 
39
     * @param Translations $translations
40
     *
41
     * @return array
42
     */
43
    protected static function buildArray(Translations $translations)
44
    {
45
        $messages = [];
46
47
        foreach ($translations as $translation) {
48
            $context = (string) $translation->getContext();
49
50
            if (!isset($messages[$context])) {
51
                $messages[$context] = [];
52
            }
53
54
            $message = $translation->getPluralTranslations();
55
            array_unshift($message, $translation->getTranslation());
56
57
            $messages[$context][$translation->getOriginal()] = $message;
58
        }
59
60
        return $messages;
61
    }
62
}
63