Completed
Pull Request — master (#82)
by
unknown
01:39
created

StaticItem::getNumberOfRows()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace PhpSchool\CliMenu\MenuItem;
4
5
use Assert\Assertion;
6
use PhpSchool\CliMenu\MenuStyle;
7
use PhpSchool\CliMenu\Util\StringUtil;
8
9
/**
10
 * @author Michael Woodward <[email protected]>
11
 */
12
class StaticItem implements MenuItemInterface
13
{
14
    /**
15
     * @var string
16
     */
17
    private $text;
18
19
    /**
20
     * @var int
21
     */
22
    private $numberOfRows = 0;
23
24
    /**
25
     * @var int
26
     */
27
    private $startRowNumber = 0;
28
29
    public function __construct(string $text)
30
    {
31
        $this->text = $text;
32
    }
33
34
    /**
35
     * Returns the number of terminal rows the item takes
36
     */
37
    public function getNumberOfRows() {
38
        return $this->numberOfRows;
39
    }
40
41
    /**
42
     * Sets the row number the item starts at in the frame
43
     */
44
    public function setStartRowNumber(int $rowNumber) {
45
        $this->startRowNumber = $rowNumber;
46
    }
47
48
    /**
49
     * Returns the row number the item starts at in the frame
50
     */
51
    public function getStartRowNumber() {
52
        return $this->startRowNumber;
53
    }
54
55
    /**
56
     * The output text for the item
57
     */
58
    public function getRows(MenuStyle $style, bool $selected = false) : array
59
    {
60
        $rows = explode("\n", StringUtil::wordwrap($this->text, $style->getContentWidth()));
61
62
        $this->numberOfRows = count($rows);
63
64
        return $rows;
65
    }
66
67
    /**
68
     * Can the item be selected
69
     */
70
    public function canSelect() : bool
71
    {
72
        return false;
73
    }
74
75
    /**
76
     * Execute the items callable if required
77
     */
78
    public function getSelectAction() : ?callable
79
    {
80
        return null;
81
    }
82
83
    /**
84
     * Return the raw string of text
85
     */
86
    public function getText() : string
87
    {
88
        return $this->text;
89
    }
90
91
    /**
92
     * Whether or not the menu item is showing the menustyle extra value
93
     */
94
    public function showsItemExtra() : bool
95
    {
96
        return false;
97
    }
98
99
    /**
100
     * Enable showing item extra
101
     */
102
    public function showItemExtra() : void
103
    {
104
        //noop
105
    }
106
107
    /**
108
     * Disable showing item extra
109
     */
110
    public function hideItemExtra() : void
111
    {
112
        //noop
113
    }
114
}
115