b3bcb53d713aac243f1e0cf2e4c29d1cf9c8e835
[yaffs-website] / vendor / psy / psysh / src / Psy / ConsoleColorFactory.php
1 <?php
2
3 /*
4  * This file is part of Psy Shell.
5  *
6  * (c) 2012-2017 Justin Hileman
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Psy;
13
14 use JakubOnderka\PhpConsoleColor\ConsoleColor;
15 use JakubOnderka\PhpConsoleHighlighter\Highlighter;
16
17 /**
18  * Builds `ConsoleColor` instances configured according to the given color mode.
19  */
20 class ConsoleColorFactory
21 {
22     private $colorMode;
23
24     /**
25      * @param string $colorMode
26      */
27     public function __construct($colorMode)
28     {
29         $this->colorMode = $colorMode;
30     }
31
32     /**
33      * Get a `ConsoleColor` instance configured according to the given color
34      * mode.
35      *
36      * @return ConsoleColor
37      */
38     public function getConsoleColor()
39     {
40         if ($this->colorMode === Configuration::COLOR_MODE_AUTO) {
41             return $this->getDefaultConsoleColor();
42         } elseif ($this->colorMode === Configuration::COLOR_MODE_FORCED) {
43             return $this->getForcedConsoleColor();
44         } elseif ($this->colorMode === Configuration::COLOR_MODE_DISABLED) {
45             return $this->getDisabledConsoleColor();
46         }
47     }
48
49     private function getDefaultConsoleColor()
50     {
51         $color = new ConsoleColor();
52         $color->addTheme(Highlighter::LINE_NUMBER, array('blue'));
53         $color->addTheme(Highlighter::TOKEN_KEYWORD, array('yellow'));
54         $color->addTheme(Highlighter::TOKEN_STRING, array('green'));
55         $color->addTheme(Highlighter::TOKEN_COMMENT, array('dark_gray'));
56
57         return $color;
58     }
59
60     private function getForcedConsoleColor()
61     {
62         $color = $this->getDefaultConsoleColor();
63         $color->setForceStyle(true);
64
65         return $color;
66     }
67
68     private function getDisabledConsoleColor()
69     {
70         $color = new ConsoleColor();
71
72         $color->addTheme(Highlighter::TOKEN_STRING, array('none'));
73         $color->addTheme(Highlighter::TOKEN_COMMENT, array('none'));
74         $color->addTheme(Highlighter::TOKEN_KEYWORD, array('none'));
75         $color->addTheme(Highlighter::TOKEN_DEFAULT, array('none'));
76         $color->addTheme(Highlighter::TOKEN_HTML, array('none'));
77         $color->addTheme(Highlighter::ACTUAL_LINE_MARK, array('none'));
78         $color->addTheme(Highlighter::LINE_NUMBER, array('none'));
79
80         return $color;
81     }
82 }