Completed
Push — master ( a7d891...2e0da8 )
by Pol
01:43
created

AbstractBaseHtmlTagObject::ensureFlatArray()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 12
ccs 8
cts 8
cp 1
rs 9.8666
c 0
b 0
f 0
cc 2
nc 1
nop 1
crap 2
1
<?php
2
3
namespace drupol\htmltag;
4
5
/**
6
 * Class AbstractBaseHtmlTagObject
7
 */
8
abstract class AbstractBaseHtmlTagObject
9
{
10
    /**
11
     * Normalize a value.
12
     *
13
     * @param mixed $values
14
     *  The value to normalize.
15
     *
16
     * @return array
17
     *   The value normalized.
18
     */
19 29
    public function normalizeValue($values)
20
    {
21 29
        $values = array_map(
22 29
            array($this, 'ensureArray'),
23 29
            $this->ensureFlatArray((array) $values)
24
        );
25
26 29
        return array_reduce(
27 29
            $values,
28 29
            'array_merge',
29 29
            []
30
        );
31
    }
32
33
    /**
34
     * Todo.
35
     *
36
     * @param array $arr
37
     *   Todo.
38
     *
39
     * @return mixed[]
40
     *   Todo.
41
     */
42 29
    public function ensureFlatArray(array $arr)
43
    {
44 29
        return array_reduce(
45 29
            $arr,
46
            function ($c, $a) {
47 24
                return is_array($a) ?
48 3
                    array_merge($c, $this->ensureFlatArray($a)) :
49 24
                    array_merge($c, [$a]);
50 29
            },
51 29
            []
52
        );
53
    }
54
55
    /**
56
     * Todo.
57
     *
58
     * @param mixed $value
59
     *   Todo.
60
     *
61
     * @return array
62
     *   Todo.
63
     */
64 24
    public function ensureArray($value)
65
    {
66 24
        switch (gettype($value)) {
67 24
            case 'string':
68 23
                $return = explode(' ', $value);
69 23
                break;
70
71 8
            case 'array':
72 8
            case 'double':
73 8
            case 'integer':
74 2
                $return = array((string) $value);
75 2
                break;
76 8
            case 'object':
77 1
                $return = array();
78 1
                if (method_exists($value, '__toString')) {
79
                    $return = array((string) $value);
80
                }
81 1
                break;
82 8
            case 'boolean':
83 8
            case 'resource':
84 8
            case 'NULL':
85
            default:
86 8
                $return = array();
87 8
                break;
88
        }
89
90 24
        return $return;
91
    }
92
}
93