| 
<?php
 /*
 * This file is part of Chevere.
 *
 * (c) Rodolfo Berrios <[email protected]>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 
 declare(strict_types=1);
 
 namespace Chevere\VarDump\Highlights;
 
 use Chevere\Parameter\Interfaces\TypeInterface;
 use Chevere\VarDump\Highlights\Traits\AssertKeyTrait;
 use Chevere\VarDump\Interfaces\HighlightInterface;
 use Chevere\VarDump\Interfaces\VarDumperInterface;
 use Colors\Color;
 use Throwable;
 
 final class ConsoleHighlight implements HighlightInterface
 {
 use AssertKeyTrait;
 
 private Color $color;
 
 /**
 * @var array<string>
 */
 private array $style;
 
 public function __construct(string $key)
 {
 $this->assertKey($key);
 $this->color = new Color();
 // @infection-ignore-all
 $this->style = $this::palette()[$key] ?? ['reset'];
 }
 
 /**
 * @infection-ignore-all
 */
 public function highlight(string $dump): string
 {
 foreach ($this->style as $style) {
 try {
 $dump = $this->color->apply("color[{$style}]", $dump);
 } catch (Throwable) { // @codeCoverageIgnoreStart
 // Ignore if color not supported
 }
 // @codeCoverageIgnoreEnd
 }
 
 return $dump;
 }
 
 /**
 * @return array<string, array<string>>
 */
 public static function palette(): array
 {
 return [
 // DarkOrange
 TypeInterface::STRING => ['208'],
 TypeInterface::FLOAT => ['208'],
 TypeInterface::INT => ['208'],
 TypeInterface::BOOL => ['208'],
 TypeInterface::NULL => ['208'],
 // Gold1
 TypeInterface::OBJECT => ['220'],
 // Green3
 TypeInterface::ARRAY => ['41'],
 // IndianRed1
 TypeInterface::RESOURCE => ['203'],
 // SkyBlue2
 VarDumperInterface::FILE => ['111'],
 // light yellow
 VarDumperInterface::CLASS_REG => ['221'],
 // Grey42
 VarDumperInterface::OPERATOR => ['242'],
 // DeepSkyBlue1
 VarDumperInterface::FUNCTION => ['39'],
 VarDumperInterface::VARIABLE => ['39'],
 // Orchid
 VarDumperInterface::MODIFIER => ['170'],
 // dark gray italic
 VarDumperInterface::EMPHASIS => ['242', '3'],
 ];
 }
 }
 
 |