tags * * @var bool */ private $usePre; /** @var array */ private $htmlAttributes; /** * @param array $htmlAttributes */ public function __construct(array $htmlAttributes = [], bool $usePre = true) { $this->htmlAttributes = $htmlAttributes + [ self::HIGHLIGHT_QUOTE => 'style="color: blue;"', self::HIGHLIGHT_BACKTICK_QUOTE => 'style="color: purple;"', self::HIGHLIGHT_RESERVED => 'style="font-weight:bold;"', self::HIGHLIGHT_BOUNDARY => '', self::HIGHLIGHT_NUMBER => 'style="color: green;"', self::HIGHLIGHT_WORD => 'style="color: #333;"', self::HIGHLIGHT_ERROR => 'style="background-color: red;"', self::HIGHLIGHT_COMMENT => 'style="color: #aaa;"', self::HIGHLIGHT_VARIABLE => 'style="color: orange;"', self::HIGHLIGHT_PRE => 'style="color: black; background-color: white;"', ]; $this->usePre = $usePre; } public function highlightToken(int $type, string $value) : string { $value = htmlentities($value, ENT_COMPAT | ENT_IGNORE, 'UTF-8'); if ($type === Token::TOKEN_TYPE_BOUNDARY && ($value==='(' || $value===')')) { return $value; } $attributes = $this->attributes($type); if ($attributes === null) { return $value; } return '' . $value . ''; } public function attributes(int $type) { if (! isset(self::TOKEN_TYPE_TO_HIGHLIGHT[$type])) { return null; } return $this->htmlAttributes[self::TOKEN_TYPE_TO_HIGHLIGHT[$type]]; } public function highlightError(string $value) : string { return sprintf( '%s%s', PHP_EOL, $this->htmlAttributes[self::HIGHLIGHT_ERROR], $value ); } public function highlightErrorMessage(string $value) : string { return $this->highlightError($value); } public function output(string $string) : string { $string =trim($string); // This is derp truncate for long list $string = preg_replace('!(IN\s*)(\()([^\)]+)(\))!', '$1$2
$3
$4', $string); if (! $this->usePre) { return $string; } return '
htmlAttributes[self::HIGHLIGHT_PRE] . '>' . $string . '
'; } }