<?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'],
];
}
}
|