/
console.php
94 lines (82 loc) · 2.07 KB
/
console.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
require_once __DIR__ . '/color.php';
class Console
{
private static $instance;
protected static $ansiColorMap = array(
'fg' => array(
Color::NORMAL => '22;39',
Color::RESET => '22;39',
Color::BLACK => '0;30',
Color::RED => '0;31',
Color::GREEN => '0;32',
Color::YELLOW => '0;33',
Color::BLUE => '0;34',
Color::MAGENTA => '0;35',
Color::CYAN => '0;36',
Color::WHITE => '0;37',
Color::GRAY => '1;30',
Color::LIGHT_RED => '1;31',
Color::LIGHT_GREEN => '1;32',
Color::LIGHT_YELLOW => '1;33',
Color::LIGHT_BLUE => '1;34',
Color::LIGHT_MAGENTA => '1;35',
Color::LIGHT_CYAN => '1;36',
Color::LIGHT_WHITE => '1;37',
),
'bg' => array(
Color::NORMAL => '0;49',
Color::RESET => '0;49',
Color::BLACK => '40',
Color::RED => '41',
Color::GREEN => '42',
Color::YELLOW => '43',
Color::BLUE => '44',
Color::MAGENTA => '45',
Color::CYAN => '46',
Color::WHITE => '47',
Color::GRAY => '40',
Color::LIGHT_RED => '41',
Color::LIGHT_GREEN => '42',
Color::LIGHT_YELLOW => '43',
Color::LIGHT_BLUE => '44',
Color::LIGHT_MAGENTA => '45',
Color::LIGHT_CYAN => '46',
Color::LIGHT_WHITE => '47',
),
);
/**
*
* @return Console
*/
public static function getInstance()
{
if(!isset(self::$instance)) {
self::$instance = new self();
}
return self::$instance;
}
protected function getColorCode($color, $type = 'fg')
{
if(!isset(self::$ansiColorMap[$type][$color])) {
throw new \Exception('Color '.$color.' does not exist');
}
return self::$ansiColorMap[$type][$color];
}
public function getColoredText($text, $color = null, $bgColor = null)
{
return
(($color === null) ? "" : "\033[".$this->getColorCode($color, 'fg')."m")
.(($bgColor === null) ? "" : "\033[".$this->getColorCode($bgColor, 'bg')."m")
.$text
."\033[0m";
}
public function write($text, $color = null, $bgColor = null)
{
echo $this->getColoredText($text, $color, $bgColor);
}
public function writeLine($text, $color = null, $bgColor = null)
{
echo $this->write($text, $color, $bgColor).PHP_EOL;
}
}