<?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; 
 
final class HtmlHighlight implements HighlightInterface 
{ 
    use AssertKeyTrait; 
 
    private string $class; 
 
    public function __construct( 
        private string $key 
    ) { 
        $this->assertKey($key); 
        $this->class = $this->palette()[$this->key] ?? ''; 
    } 
 
    public function highlight(string $dump): string 
    { 
        return <<<HTML 
        <span class="chv-dump-{$this->class}">{$dump}</span> 
        HTML; 
    } 
 
    /** 
     * @return array<string, string> 
     */ 
    public static function palette(): array 
    { 
        return [ 
            TypeInterface::STRING => 'string', 
            TypeInterface::FLOAT => 'float', 
            TypeInterface::INT => 'int', 
            TypeInterface::BOOL => 'bool', 
            TypeInterface::NULL => 'null', 
            TypeInterface::OBJECT => 'object', 
            TypeInterface::ARRAY => 'array', 
            TypeInterface::RESOURCE => 'resource', 
            VarDumperInterface::FILE => 'file', 
            VarDumperInterface::CLASS_REG => 'class', 
            VarDumperInterface::OPERATOR => 'operator', 
            VarDumperInterface::FUNCTION => 'function', 
            VarDumperInterface::VARIABLE => 'variable', 
            VarDumperInterface::MODIFIER => 'modifier', 
            VarDumperInterface::EMPHASIS => 'emphasis', 
        ]; 
    } 
} 
 
 |