Completed
Push — master ( fc298f...0e2b95 )
by Peter
09:35
created

Maker::getMixedData()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
ccs 8
cts 8
cp 1
rs 9.4285
cc 2
eloc 6
nc 2
nop 1
crap 2
1
<?php
2
3
namespace PeterColes\Languages;
4
5
class Maker
6
{
7
    protected $languages = null;
8
9 9
    public function lookup($filter = 'major', $locale = 'en', $flip = false)
10
    {
11 9
        $this->prep($filter, $locale);
12
13 9
        if ($flip) {
14 1
            return $this->languages->flip();
15
        }
16
17 8
        return $this->languages;
18
    }
19
20 4
    public function keyValue($filter = 'major', $locale = 'en', $key = 'key', $value = 'value')
21
    {
22 4
        $this->prep($filter, $locale);
23
24 4
        $key = $key ?: 'key';
25 4
        $value = $value ?: 'value';
26
27 4
        return $this->languages->transform(function($item, $index) use ($key, $value) {
28 4
            return (object) [ $key => $index, $value =>$item ];
29 4
        })->values(); 
30
    }
31
32 13
    protected function prep($filter, $locale)
33
    {
34 13
        if ($locale == 'mixed') {
35 2
            $this->getMixedData($filter);
36 2
        } else {
37 11
            $this->getData($locale);
38 11
            $this->filter($filter);
39
        }
40 13
    }
41
42 2
    protected function getMixedData($filter)
43
    {
44 2
        $languages = [];
45 2
        foreach ($filter as $locale) {
46 2
            $language = require realpath(__DIR__."/../data/$locale.php");
47 2
            $languages[$locale] = $language[$locale];
48 2
        }
49
50 2
        $this->languages = collect($languages);             
51 2
    }
52
53 11
    protected function getData($locale)
54
    {
55 11
        $locale = $locale ?: 'en';
56
57 11
        $this->languages = collect(require realpath(__DIR__."/../data/$locale.php"));             
58 11
    }
59
60 11
    protected function filter($filter)
61
    {
62 11
        if (is_array($filter)) {
63 1
            $class = '\\PeterColes\\Languages\\Filters\\Custom';
64 1
            $this->languages = call_user_func([new $class, 'filter'], $this->languages, $filter);
65 1
        } else {
66 10
            $filter = $filter ?: 'major';
67 10
            $class = '\\PeterColes\\Languages\\Filters\\'.ucfirst($filter);
68 10
            $this->languages = call_user_func([new $class, 'filter'], $this->languages);
69
        }
70 11
    }
71
}
72