More PHP highlighting
This commit is contained in:
parent
346ef67a08
commit
fa96e91b30
54
src/Row.php
54
src/Row.php
@ -303,13 +303,38 @@ class Row {
|
|||||||
$charStart = strpos($this->render, $char, $offset);
|
$charStart = strpos($this->render, $char, $offset);
|
||||||
$charEnd = $charStart + $charLen;
|
$charEnd = $charStart + $charLen;
|
||||||
|
|
||||||
|
if ($token['typeName'] === 'RAW')
|
||||||
|
{
|
||||||
|
switch($token['char'])
|
||||||
|
{
|
||||||
|
case '^':
|
||||||
|
case '%':
|
||||||
|
case '+':
|
||||||
|
case '-':
|
||||||
|
case '*':
|
||||||
|
case '/':
|
||||||
|
case '.':
|
||||||
|
case '|':
|
||||||
|
case '~':
|
||||||
|
case '>':
|
||||||
|
case '<':
|
||||||
|
case '=':
|
||||||
|
case '!':
|
||||||
|
array_replace_range($this->hl, $charStart, $charLen, Highlight::OPERATOR);
|
||||||
|
$offset = $charEnd;
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch ($token['type'])
|
switch ($token['type'])
|
||||||
{
|
{
|
||||||
|
// Number literals
|
||||||
case T_LNUMBER:
|
case T_LNUMBER:
|
||||||
array_replace_range($this->hl, $charStart, $charLen, Highlight::NUMBER);
|
array_replace_range($this->hl, $charStart, $charLen, Highlight::NUMBER);
|
||||||
$offset = $charEnd;
|
$offset = $charEnd;
|
||||||
continue 2;
|
continue 2;
|
||||||
|
|
||||||
|
// Simple string literals
|
||||||
case T_CONSTANT_ENCAPSED_STRING:
|
case T_CONSTANT_ENCAPSED_STRING:
|
||||||
array_replace_range($this->hl, $charStart, $charLen, Highlight::STRING);
|
array_replace_range($this->hl, $charStart, $charLen, Highlight::STRING);
|
||||||
$offset = $charEnd;
|
$offset = $charEnd;
|
||||||
@ -321,6 +346,7 @@ class Row {
|
|||||||
case T_BOOLEAN_OR:
|
case T_BOOLEAN_OR:
|
||||||
case T_COALESCE:
|
case T_COALESCE:
|
||||||
case T_CONCAT_EQUAL:
|
case T_CONCAT_EQUAL:
|
||||||
|
case T_DEC:
|
||||||
case T_DIV_EQUAL:
|
case T_DIV_EQUAL:
|
||||||
case T_DOUBLE_ARROW:
|
case T_DOUBLE_ARROW:
|
||||||
case T_DOUBLE_COLON:
|
case T_DOUBLE_COLON:
|
||||||
@ -339,6 +365,7 @@ class Row {
|
|||||||
case T_MINUS_EQUAL:
|
case T_MINUS_EQUAL:
|
||||||
case T_MOD_EQUAL:
|
case T_MOD_EQUAL:
|
||||||
case T_MUL_EQUAL:
|
case T_MUL_EQUAL:
|
||||||
|
case T_NS_SEPARATOR:
|
||||||
case T_OBJECT_OPERATOR:
|
case T_OBJECT_OPERATOR:
|
||||||
case T_OR_EQUAL:
|
case T_OR_EQUAL:
|
||||||
case T_PAAMAYIM_NEKUDOTAYIM:
|
case T_PAAMAYIM_NEKUDOTAYIM:
|
||||||
@ -354,20 +381,34 @@ class Row {
|
|||||||
$offset = $charEnd;
|
$offset = $charEnd;
|
||||||
continue 2;
|
continue 2;
|
||||||
|
|
||||||
|
// Simple variables
|
||||||
case T_VARIABLE:
|
case T_VARIABLE:
|
||||||
array_replace_range($this->hl, $charStart, $charLen, Highlight::VARIABLE);
|
array_replace_range($this->hl, $charStart, $charLen, Highlight::VARIABLE);
|
||||||
$offset = $charEnd;
|
$offset = $charEnd;
|
||||||
continue 2;
|
continue 2;
|
||||||
|
|
||||||
|
case T_COMMENT:
|
||||||
case T_DOC_COMMENT:
|
case T_DOC_COMMENT:
|
||||||
// TODO
|
// TODO
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// Not string literals, but identifiers, keywords, etc.
|
||||||
|
case T_STRING:
|
||||||
|
if (in_array($char, $this->parent->syntax->keywords2, TRUE))
|
||||||
|
{
|
||||||
|
array_replace_range($this->hl, $charStart, $charLen, Highlight::KEYWORD2);
|
||||||
|
$offset = $charEnd;
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// Keywords1
|
// Keywords1
|
||||||
case T_ABSTRACT:
|
case T_ABSTRACT:
|
||||||
case T_AS:
|
case T_AS:
|
||||||
case T_BREAK:
|
case T_BREAK:
|
||||||
case T_CASE:
|
case T_CASE:
|
||||||
|
case T_CATCH:
|
||||||
|
case T_CLASS:
|
||||||
case T_DO:
|
case T_DO:
|
||||||
array_replace_range($this->hl, $charStart, $charLen, Highlight::KEYWORD1);
|
array_replace_range($this->hl, $charStart, $charLen, Highlight::KEYWORD1);
|
||||||
// $keyword = $this->getKeywordFromToken($token['type']);
|
// $keyword = $this->getKeywordFromToken($token['type']);
|
||||||
@ -379,17 +420,4 @@ class Row {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getKeywordFromToken(int $token): ?string
|
|
||||||
{
|
|
||||||
$map = [
|
|
||||||
T_ABSTRACT => 'abstract',
|
|
||||||
T_AS => 'as',
|
|
||||||
T_BREAK => 'break',
|
|
||||||
T_CASE => 'case',
|
|
||||||
T_DO => 'do',
|
|
||||||
];
|
|
||||||
|
|
||||||
return $map[$token] ?? NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user