Completed
Pull Request — master (#255)
by
unknown
03:48
created

Builder   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 0

Test Coverage

Coverage 80.95%

Importance

Changes 0
Metric Value
wmc 8
lcom 2
cbo 0
dl 0
loc 45
ccs 17
cts 21
cp 0.8095
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A transformItems() 0 4 1
A add() 0 8 2
A applyFilters() 0 16 4
1
<?php
2
3
namespace JeroenNoten\LaravelAdminLte\Menu;
4
5
class Builder
6
{
7
    public $menu = [];
8
9
    /**
10
     * @var array
11
     */
12
    private $filters;
13
14 1
    public function __construct(array $filters = [])
15
    {
16 1
        $this->filters = $filters;
17 1
    }
18
19 1
    public function add()
20
    {
21 1
        $items = $this->transformItems(func_get_args());
22
23 1
        foreach ($items as $item) {
24 1
            array_push($this->menu, $item);
25 1
        }
26 1
    }
27
28 1
    public function transformItems($items)
29
    {
30 1
        return array_filter(array_map([$this, 'applyFilters'], $items));
31
    }
32
33 1
    protected function applyFilters($item)
34
    {
35 1
        if (is_string($item)) {
36
            return $item;
37
        }
38
39 1
        foreach ($this->filters as $filter) {
40
            $item = $filter->transform($item, $this);
41 1
        }
42
43 1
        if (isset($item['header'])) {
44
            $item = $item['header'];
45
        }
46
47 1
        return $item;
48
    }
49
}
50