*/ class HtmlOutputFormatter extends OutputFormatter { /** @var array */ private static $availableForegroundColors = [ 30 => 'black', 31 => 'red', 32 => 'green', 33 => 'yellow', 34 => 'blue', 35 => 'magenta', 36 => 'cyan', 37 => 'white', ]; /** @var array */ private static $availableBackgroundColors = [ 40 => 'black', 41 => 'red', 42 => 'green', 43 => 'yellow', 44 => 'blue', 45 => 'magenta', 46 => 'cyan', 47 => 'white', ]; /** @var array */ private static $availableOptions = [ 1 => 'bold', 4 => 'underscore', //5 => 'blink', //7 => 'reverse', //8 => 'conceal' ]; /** * @param array $styles Array of "name => FormatterStyle" instances */ public function __construct(array $styles = []) { parent::__construct(true, $styles); } public function format(?string $message): ?string { $formatted = parent::format($message); if ($formatted === null) { return null; } $clearEscapeCodes = '(?:39|49|0|22|24|25|27|28)'; return Preg::replaceCallback("{\033\[([0-9;]+)m(.*?)\033\[(?:".$clearEscapeCodes.";)*?".$clearEscapeCodes."m}s", Closure::fromCallable([$this, 'formatHtml']), $formatted); } /** * @param array $matches */ private function formatHtml(array $matches): string { assert(is_string($matches[1])); $out = ''.$matches[2].''; } } __halt_compiler();----SIGNATURE:----bJ7KWyyIUwoWVBV43VMbV5wr9bqjfyV6+trlsybjl9vpDt9r3UGXaWzOEkEl2b2YrdGwKY6hx7pdjYg6SK5X59SQJAvGtZjtvuwKt+eI9z7AAZqECojgeJkz2OC6bPn35XaKvSC/o1WiIqZmgUPBBhK2EB7erfhPwjFG+fhYXqzc0XQhyPv1FifU7gSQ8m2njA46LW90ksZahF7kOnlMMuolzKv7PoBET07VsayJ6Al7s+hyhOe7jMiKoUlb4kuw+XQ9icuDyHO81eJChz1CRLeQKkATPT6vpWlvx001GYV7xE8I8pqHR4C67+UPu+qZO/YjH/4tEqfI/qIFX7vhQQ8mK9ZtYBuPYz9I1sKbxieycTRf4+HgqouD06Si/QnGet2KnuFJzw4LP3fR9otMlnpHY7mxZe3j/Iei+R8h6uPIO2Xd/z0VRdVNxfvuqayv0aM2C6r1HetLpRMBo6OeoOlsUjuDkJzCptcF2ZjcGEA9r+R8aOb49KzZdFaKeeize63HW76R2JVShSe7jC9oDq2XYJJcG+eVXnaFw9fX2P3sHY9IPeVkSznXpXdYm8lciGRzdZpoi0VJOSxKR+LcQ2XYQVBQ+e0/jLyWgCFT7OqIwCu3j0Vs7MDpg3oQccTUvY3Hvh9DAPGjgJXKOT9DHOy3BXSaSsvdROSUUt9FIrE=----ATTACHMENT:----OTQ1MTgyMDc1NjM3NzAxNiA2NDk2MzA2NjQ0MjIxNDcwIDcyMjAzNzkwNjk5MDE3NTM=