4 * This file is part of Psy Shell.
6 * (c) 2012-2017 Justin Hileman
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
14 use JakubOnderka\PhpConsoleColor\ConsoleColor;
15 use JakubOnderka\PhpConsoleHighlighter\Highlighter;
18 * Builds `ConsoleColor` instances configured according to the given color mode.
20 class ConsoleColorFactory
25 * @param string $colorMode
27 public function __construct($colorMode)
29 $this->colorMode = $colorMode;
33 * Get a `ConsoleColor` instance configured according to the given color
36 * @return ConsoleColor
38 public function getConsoleColor()
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();
49 private function getDefaultConsoleColor()
51 $color = new ConsoleColor();
52 $color->addTheme(Highlighter::LINE_NUMBER, array('blue'));
57 private function getForcedConsoleColor()
59 $color = $this->getDefaultConsoleColor();
60 $color->setForceStyle(true);
65 private function getDisabledConsoleColor()
67 $color = new ConsoleColor();
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'));