initial commit; version 22.5.12042
This commit is contained in:
79
libs/Doctrine/SqlFormatter/CliHighlighter.php
Normal file
79
libs/Doctrine/SqlFormatter/CliHighlighter.php
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Doctrine\SqlFormatter;
|
||||
|
||||
use function sprintf;
|
||||
use const PHP_EOL;
|
||||
|
||||
final class CliHighlighter implements Highlighter
|
||||
{
|
||||
const HIGHLIGHT_FUNCTIONS = 'functions';
|
||||
|
||||
/** @var array<string, string> */
|
||||
private $escapeSequences;
|
||||
|
||||
/**
|
||||
* @param array<string, string> $escapeSequences
|
||||
*/
|
||||
public function __construct(array $escapeSequences = [])
|
||||
{
|
||||
$this->escapeSequences = $escapeSequences + [
|
||||
self::HIGHLIGHT_QUOTE => "\x1b[34;1m",
|
||||
self::HIGHLIGHT_BACKTICK_QUOTE => "\x1b[35;1m",
|
||||
self::HIGHLIGHT_RESERVED => "\x1b[37m",
|
||||
self::HIGHLIGHT_BOUNDARY => '',
|
||||
self::HIGHLIGHT_NUMBER => "\x1b[32;1m",
|
||||
self::HIGHLIGHT_WORD => '',
|
||||
self::HIGHLIGHT_ERROR => "\x1b[31;1;7m",
|
||||
self::HIGHLIGHT_COMMENT => "\x1b[30;1m",
|
||||
self::HIGHLIGHT_VARIABLE => "\x1b[36;1m",
|
||||
self::HIGHLIGHT_FUNCTIONS => "\x1b[37m",
|
||||
];
|
||||
}
|
||||
|
||||
public function highlightToken(int $type, string $value) : string
|
||||
{
|
||||
if ($type === Token::TOKEN_TYPE_BOUNDARY && ($value==='(' || $value===')')) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
$prefix = $this->prefix($type);
|
||||
if ($prefix === null) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
return $prefix . $value . "\x1b[0m";
|
||||
}
|
||||
|
||||
private function prefix(int $type)
|
||||
{
|
||||
if (! isset(self::TOKEN_TYPE_TO_HIGHLIGHT[$type])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $this->escapeSequences[self::TOKEN_TYPE_TO_HIGHLIGHT[$type]];
|
||||
}
|
||||
|
||||
public function highlightError(string $value) : string
|
||||
{
|
||||
return sprintf(
|
||||
'%s%s%s%s',
|
||||
PHP_EOL,
|
||||
$this->escapeSequences[self::HIGHLIGHT_ERROR],
|
||||
$value,
|
||||
"\x1b[0m"
|
||||
);
|
||||
}
|
||||
|
||||
public function highlightErrorMessage(string $value) : string
|
||||
{
|
||||
return $this->highlightError($value);
|
||||
}
|
||||
|
||||
public function output(string $string) : string
|
||||
{
|
||||
return $string . "\n";
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user