d5495d3a088bceb9f129b24c68e97553ad32a2ec
[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
54         return $color;
55     }
56
57     private function getForcedConsoleColor()
58     {
59         $color = $this->getDefaultConsoleColor();
60         $color->setForceStyle(true);
61
62         return $color;
63     }
64
65     private function getDisabledConsoleColor()
66     {
67         $color = new ConsoleColor();
68
69         $color->addTheme(Highlighter::TOKEN_STRING, array('none'));
70         $color->addTheme(Highlighter::TOKEN_COMMENT, array('none'));
71         $color->addTheme(Highlighter::TOKEN_KEYWORD, array('none'));
72         $color->addTheme(Highlighter::TOKEN_DEFAULT, array('none'));
73         $color->addTheme(Highlighter::TOKEN_HTML, array('none'));
74         $color->addTheme(Highlighter::ACTUAL_LINE_MARK, array('none'));
75         $color->addTheme(Highlighter::LINE_NUMBER, array('none'));
76
77         return $color;
78     }
79 }