Passed
Push — master ( 91e234...334227 )
by Aydin
02:43
created

CheckboxStyle::setUncheckedMarker()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace PhpSchool\CliMenu\Style;
4
5
class CheckboxStyle
6
{
7
    private const DEFAULT_STYLES = [
8
        'checkedMarker' => '[✔] ',
9
        'uncheckedMarker' => '[ ] ',
10
        'itemExtra' => '✔',
11
        'displaysExtra' => false,
12
    ];
13
14
    /**
15
     * @var string
16
     */
17
    private $checkedMarker;
18
19
    /**
20
     * @var string
21
     */
22
    private $uncheckedMarker;
23
24
    /**
25
     * @var string
26
     */
27
    private $itemExtra;
28
29
    /**
30
     * @var bool
31
     */
32
    private $displaysExtra;
33
34
    public function __construct()
35
    {
36
        $this->checkedMarker = self::DEFAULT_STYLES['checkedMarker'];
37
        $this->uncheckedMarker = self::DEFAULT_STYLES['uncheckedMarker'];
38
        $this->itemExtra = self::DEFAULT_STYLES['itemExtra'];
39
        $this->displaysExtra = self::DEFAULT_STYLES['displaysExtra'];
40
    }
41
42
    public function hasChangedFromDefaults() : bool
43
    {
44
        $currentValues = [
45
            $this->checkedMarker,
46
            $this->uncheckedMarker,
47
            $this->itemExtra,
48
            $this->displaysExtra,
49
        ];
50
51
        return $currentValues !== array_values(self::DEFAULT_STYLES);
52
    }
53
54
    public function getMarker(bool $selected) : string
55
    {
56
        return $selected ? $this->checkedMarker : $this->uncheckedMarker;
57
    }
58
59
    public function getCheckedMarker() : string
60
    {
61
        return $this->checkedMarker;
62
    }
63
64
    public function setCheckedMarker(string $marker) : self
65
    {
66
        $this->checkedMarker = $marker;
67
68
        return $this;
69
    }
70
71
    public function getUncheckedMarker() : string
72
    {
73
        return $this->uncheckedMarker;
74
    }
75
76
    public function setUncheckedMarker(string $marker) : self
77
    {
78
        $this->uncheckedMarker = $marker;
79
80
        return $this;
81
    }
82
83
    public function getItemExtra() : string
84
    {
85
        return $this->itemExtra;
86
    }
87
88
    public function setItemExtra(string $itemExtra) : self
89
    {
90
        $this->itemExtra = $itemExtra;
91
92
        // if we customise item extra, it means we most likely want to display it
93
        $this->setDisplaysExtra(true);
94
95
        return $this;
96
    }
97
98
    public function getDisplaysExtra() : bool
99
    {
100
        return $this->displaysExtra;
101
    }
102
103
    public function setDisplaysExtra(bool $displaysExtra) : self
104
    {
105
        $this->displaysExtra = $displaysExtra;
106
107
        return $this;
108
    }
109
}
110