Option::pushSubset()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 14
rs 9.4285
cc 1
eloc 8
nc 1
nop 2
1
<?php
2
3
namespace EnergieProduction\Chart;
4
5
use closure;
6
use EnergieProduction\Chart\Renderable;
7
use EnergieProduction\Chart\Contracts\Expression;
8
9
class Option {
10
11
    protected $options;
12
13
    public function __construct()
14
    {
15
        $this->options = [];
16
    }
17
18
    /**
19
     * [pushSubset description]
20
     * @param  string  $subset
21
     * @param  \closure $closure
22
     * @return void
23
     */
24
    public function pushSubset($subset, closure $closure)
25
    {
26
        $option = new self;
27
28
        call_user_func($closure, $option);
29
30
        $render = new Renderable\Render();
31
        $render = new Renderable\Subset($render);
32
33
        $this->options = array_merge($this->options, $render->handle(
34
            $subset, 
35
            $option->render()
36
        ));
37
    }
38
39
    /**
40
     * [pushCriteria description]
41
     * @param  mixed $criteria
42
     * @return void
43
     */
44
    public function pushCriteria($criteria)
45
    {
46
        $content = $criteria->getcontent();
47
48
        $render = new Renderable\Render();
49
        $render = new Renderable\Criteria($render);
50
51
        if ($content instanceof Expression) {
52
            $render = new Renderable\Expression($render);
53
            $content = $content->render();
54
        }
55
56
        $this->options = array_merge($this->options, $render->handle(
57
            $criteria->resolveKey(), 
58
            $content
59
        ));
60
    }
61
62
    /**
63
     * [render description]
64
     * @return array
65
     */
66
    public function render()
67
    {
68
        return $this->options;
69
    }
70
}
71