Completed
Pull Request — master (#271)
by
unknown
03:32
created

Builder   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 0

Test Coverage

Coverage 78.26%

Importance

Changes 0
Metric Value
wmc 10
lcom 2
cbo 0
dl 0
loc 53
ccs 18
cts 23
cp 0.7826
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A add() 0 8 2
A addIn() 0 7 2
A transformItems() 0 4 1
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 20
    public function __construct(array $filters = [])
15
    {
16 20
        $this->filters = $filters;
17 20
    }
18
19 20
    public function add()
20
    {
21 20
        $items = $this->transformItems(func_get_args());
22
23 20
        foreach ($items as $item) {
24 20
            array_push($this->menu, $item);
25
        }
26 20
    }
27
28
    public function addIn(array $items, $position){
29
        $items = $this->transformItems($items);
30
31
        foreach ($items as $item) {
32
            array_splice($this->menu, $position, 0, $item);
33
        }
34
    }
35
36 20
    public function transformItems($items)
37
    {
38 20
        return array_filter(array_map([$this, 'applyFilters'], $items));
39
    }
40
41 20
    protected function applyFilters($item)
42
    {
43 20
        if (is_string($item)) {
44 1
            return $item;
45
        }
46
47 19
        foreach ($this->filters as $filter) {
48 18
            $item = $filter->transform($item, $this);
49
        }
50
51 19
        if (isset($item['header'])) {
52 1
            $item = $item['header'];
53
        }
54
55 19
        return $item;
56
    }
57
}
58