Completed
Push — master ( 55caa0...3f2e9b )
by Oscar
02:05
created

MultidimensionalArrayTrait   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 46
rs 10
wmc 7
lcom 0
cbo 2

1 Method

Rating   Name   Duplication   Size   Complexity  
C toArray() 0 32 7
1
<?php
2
3
namespace Gettext\Utils;
4
5
use Gettext\Translations;
6
7
/**
8
 * Trait used by all generators that exports the translations to multidimensional arrays (context => [original => [translation, plural1, pluraln...]]).
9
 */
10
trait MultidimensionalArrayTrait
11
{
12
    use HeadersGeneratorTrait;
13
14
    /**
15
     * Returns a multidimensional array.
16
     * 
17
     * @param Translations $translations
18
     * @param bool         $includeHeaders
19
     * @param bool         $forceArray
20
     *
21
     * @return array
22
     */
23
    private static function toArray(Translations $translations, $includeHeaders, $forceArray = false)
24
    {
25
        $pluralForm = $translations->getPluralForms();
26
        $pluralLimit = is_array($pluralForm) ? ($pluralForm[0] - 1) : null;
27
        $messages = [];
28
29
        if ($includeHeaders) {
30
            $messages[''] = [
31
                '' => [self::generateHeaders($translations)],
32
            ];
33
        }
34
35
        foreach ($translations as $translation) {
36
            $context = $translation->getContext();
37
            $original = $translation->getOriginal();
38
39
            if (!isset($messages[$context])) {
40
                $messages[$context] = [];
41
            }
42
43
            if ($translation->hasPluralTranslations()) {
44
                $messages[$context][$original] = $translation->getPluralTranslations($pluralLimit);
45
                array_unshift($messages[$context][$original], $translation->getTranslation());
46
            } elseif ($forceArray) {
47
                $messages[$context][$original] = [$translation->getTranslation()];
48
            } else {
49
                $messages[$context][$original] = $translation->getTranslation();
50
            }
51
        }
52
53
        return $messages;
54
    }
55
}
56