|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
/** |
|
4
|
|
|
* Symbols for frames take from article https://en.wikipedia.org/wiki/Box-drawing_character [Unix, CP/M, BBS] |
|
5
|
|
|
*/ |
|
6
|
|
|
|
|
7
|
|
|
namespace VPA\Console; |
|
8
|
|
|
|
|
9
|
|
|
use VPA\DI\Injectable; |
|
10
|
|
|
|
|
11
|
|
|
#[Injectable] |
|
12
|
|
|
class FrameConsoleConfig implements FrameConfigInterface |
|
13
|
|
|
{ |
|
14
|
|
|
private FrameSymbol $cornerLeftTop; |
|
15
|
|
|
private FrameSymbol $cornerRightTop; |
|
16
|
|
|
private FrameSymbol $cornerMiddleTop; |
|
17
|
|
|
private FrameSymbol $cornerLeftBottom; |
|
18
|
|
|
private FrameSymbol $cornerRightBottom; |
|
19
|
|
|
private FrameSymbol $cornerMiddleBottom; |
|
20
|
|
|
private FrameSymbol $lineVertical; |
|
21
|
|
|
private FrameSymbol $lineHorizontal; |
|
22
|
|
|
private FrameSymbol $cornerLeftMiddle; |
|
23
|
|
|
private FrameSymbol $cornerRightMiddle; |
|
24
|
|
|
private FrameSymbol $cornerMiddleMiddle; |
|
25
|
|
|
private Symbol $space; |
|
26
|
|
|
|
|
27
|
55 |
|
public function __construct(private Shell $shell) |
|
28
|
|
|
{ |
|
29
|
55 |
|
$this->space = new Symbol(" "); |
|
30
|
55 |
|
$this->lineVertical = new FrameSymbol("\x78", "|"); |
|
31
|
55 |
|
$this->lineHorizontal = new FrameSymbol("\x71", "-"); |
|
32
|
55 |
|
$this->cornerLeftMiddle = new FrameSymbol("\x74", "a"); |
|
33
|
55 |
|
$this->cornerRightMiddle = new FrameSymbol("\x75", "d"); |
|
34
|
55 |
|
$this->cornerMiddleMiddle = new FrameSymbol("\x6e", "s"); |
|
35
|
|
|
|
|
36
|
55 |
|
$this->cornerLeftTop = new FrameSymbol("\x6c", "q"); |
|
37
|
55 |
|
$this->cornerRightTop = new FrameSymbol("\x6b", "e"); |
|
38
|
55 |
|
$this->cornerMiddleTop = new FrameSymbol("\x77", "w"); |
|
39
|
55 |
|
$this->cornerLeftBottom = new FrameSymbol("\x6d", "z"); |
|
40
|
55 |
|
$this->cornerRightBottom = new FrameSymbol("\x6a", "c"); |
|
41
|
55 |
|
$this->cornerMiddleBottom = new FrameSymbol("\x76", "x"); |
|
42
|
|
|
} |
|
43
|
|
|
|
|
44
|
25 |
|
public function __get(string $name): object |
|
45
|
|
|
{ |
|
46
|
25 |
|
return $this->$name ?? $this->space; |
|
47
|
|
|
} |
|
48
|
|
|
} |
|
49
|
|
|
|