Some more code cleanup
All checks were successful
timw4mail/php-kilo/pipeline/head This commit looks good
All checks were successful
timw4mail/php-kilo/pipeline/head This commit looks good
This commit is contained in:
parent
99685f3fcb
commit
31144fb2e3
@ -23,4 +23,188 @@ class Highlight {
|
||||
public const INVALID = 10;
|
||||
public const MATCH = 11;
|
||||
public const IDENTIFIER = 12;
|
||||
|
||||
/**
|
||||
* Map a PHP syntax token to its associated highlighting type
|
||||
*
|
||||
* @param int $token
|
||||
* @return int
|
||||
*/
|
||||
public static function fromPHPToken(int $token): int
|
||||
{
|
||||
return match($token) {
|
||||
// Delimiters
|
||||
T_ARRAY,
|
||||
T_CURLY_OPEN,
|
||||
T_DOLLAR_OPEN_CURLY_BRACES,
|
||||
T_OPEN_TAG,
|
||||
T_OPEN_TAG_WITH_ECHO,
|
||||
T_CLOSE_TAG,
|
||||
T_START_HEREDOC,
|
||||
T_END_HEREDOC => Highlight::DELIMITER,
|
||||
|
||||
// Number literals and magic constants
|
||||
T_CLASS_C,
|
||||
T_DIR,
|
||||
T_DNUMBER,
|
||||
T_LNUMBER,
|
||||
T_FILE,
|
||||
T_FUNC_C,
|
||||
T_LINE,
|
||||
T_METHOD_C,
|
||||
T_NS_C,
|
||||
T_NUM_STRING,
|
||||
T_TRAIT_C => Highlight::NUMBER,
|
||||
|
||||
// String literals
|
||||
T_CONSTANT_ENCAPSED_STRING, T_ENCAPSED_AND_WHITESPACE => Highlight::STRING,
|
||||
|
||||
// Simple variables
|
||||
T_VARIABLE, T_STRING_VARNAME => Highlight::VARIABLE,
|
||||
|
||||
// Operators
|
||||
T_AS,
|
||||
T_AND_EQUAL,
|
||||
T_BOOLEAN_AND,
|
||||
T_BOOLEAN_OR,
|
||||
T_COALESCE,
|
||||
T_COALESCE_EQUAL,
|
||||
T_CONCAT_EQUAL,
|
||||
T_DEC,
|
||||
T_DIV_EQUAL,
|
||||
T_DOUBLE_ARROW,
|
||||
T_DOUBLE_COLON,
|
||||
T_ELLIPSIS,
|
||||
T_INC,
|
||||
T_INSTANCEOF,
|
||||
T_INSTEADOF,
|
||||
T_IS_EQUAL,
|
||||
T_IS_GREATER_OR_EQUAL,
|
||||
T_IS_IDENTICAL,
|
||||
T_IS_NOT_EQUAL,
|
||||
T_IS_NOT_IDENTICAL,
|
||||
T_IS_SMALLER_OR_EQUAL,
|
||||
T_SPACESHIP,
|
||||
T_LOGICAL_AND,
|
||||
T_LOGICAL_OR,
|
||||
T_LOGICAL_XOR,
|
||||
T_MINUS_EQUAL,
|
||||
T_MOD_EQUAL,
|
||||
T_MUL_EQUAL,
|
||||
T_NS_SEPARATOR,
|
||||
T_NULLSAFE_OBJECT_OPERATOR,
|
||||
T_OBJECT_OPERATOR,
|
||||
T_OR_EQUAL,
|
||||
T_PLUS_EQUAL,
|
||||
T_POW,
|
||||
T_POW_EQUAL,
|
||||
T_SL,
|
||||
T_SL_EQUAL,
|
||||
T_SR,
|
||||
T_SR_EQUAL,
|
||||
T_XOR_EQUAL => Highlight::OPERATOR,
|
||||
|
||||
// Keywords1
|
||||
T_ABSTRACT,
|
||||
T_BREAK,
|
||||
T_CASE,
|
||||
T_CATCH,
|
||||
T_CLASS,
|
||||
T_CLONE,
|
||||
T_CONST,
|
||||
T_CONTINUE,
|
||||
T_DECLARE,
|
||||
T_DEFAULT,
|
||||
T_DO,
|
||||
T_ECHO,
|
||||
T_ELSE,
|
||||
T_ELSEIF,
|
||||
T_EMPTY,
|
||||
T_ENDDECLARE,
|
||||
T_ENDFOR,
|
||||
T_ENDFOREACH,
|
||||
T_ENDIF,
|
||||
T_ENDSWITCH,
|
||||
T_ENDWHILE,
|
||||
T_EVAL,
|
||||
T_EXIT,
|
||||
T_EXTENDS,
|
||||
T_FINAL,
|
||||
T_FINALLY,
|
||||
T_FN,
|
||||
T_FOR,
|
||||
T_FOREACH,
|
||||
T_FUNCTION,
|
||||
T_GLOBAL,
|
||||
T_GOTO,
|
||||
T_HALT_COMPILER,
|
||||
T_IF,
|
||||
T_IMPLEMENTS,
|
||||
T_INCLUDE,
|
||||
T_INCLUDE_ONCE,
|
||||
T_INTERFACE,
|
||||
T_ISSET,
|
||||
T_LIST,
|
||||
T_MATCH,
|
||||
T_NAMESPACE,
|
||||
T_NEW,
|
||||
T_PRINT,
|
||||
T_PRIVATE,
|
||||
T_PUBLIC,
|
||||
T_PROTECTED,
|
||||
T_REQUIRE,
|
||||
T_REQUIRE_ONCE,
|
||||
T_RETURN,
|
||||
T_STATIC,
|
||||
T_SWITCH,
|
||||
T_THROW,
|
||||
T_TRAIT,
|
||||
T_TRY,
|
||||
T_UNSET,
|
||||
T_USE,
|
||||
T_VAR,
|
||||
T_WHILE,
|
||||
T_YIELD,
|
||||
T_YIELD_FROM => Highlight::KEYWORD1,
|
||||
|
||||
// Not string literals, but identifiers, keywords, etc.
|
||||
T_STRING => Highlight::IDENTIFIER,
|
||||
|
||||
// Types and casts
|
||||
T_ARRAY_CAST,
|
||||
T_BOOL_CAST,
|
||||
T_CALLABLE,
|
||||
T_DOUBLE_CAST,
|
||||
T_INT_CAST,
|
||||
T_OBJECT_CAST,
|
||||
T_STRING_CAST,
|
||||
T_UNSET_CAST => Highlight::KEYWORD2,
|
||||
|
||||
// Invalid syntax
|
||||
T_BAD_CHARACTER => Highlight::INVALID,
|
||||
|
||||
default => Highlight::NORMAL,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Map a single character PHP delimiter or operator to its associated
|
||||
* highlighting type
|
||||
*
|
||||
* @param string $char
|
||||
* @return int
|
||||
*/
|
||||
public static function fromPHPChar(string $char): int
|
||||
{
|
||||
return match ($char) {
|
||||
// Delimiter characters
|
||||
'[', ']', '{', '}', '(', ')', '"', "'" => Highlight::DELIMITER,
|
||||
|
||||
// Single character operators
|
||||
'?', ',', ';', ':', '^', '%', '+', '-',
|
||||
'*', '/', '.', '|', '~', '>', '<', '=', '!' => Highlight::OPERATOR,
|
||||
|
||||
default => Highlight::NORMAL,
|
||||
};
|
||||
}
|
||||
}
|
@ -21,7 +21,7 @@ final class Point {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new Point from another position
|
||||
* Create a new Point from another Point
|
||||
*
|
||||
* @param Point $pos
|
||||
* @return Point
|
||||
|
@ -389,8 +389,8 @@ class Row {
|
||||
}
|
||||
}
|
||||
|
||||
$tokenHighlight = php_token_to_highlight($token['type']);
|
||||
$charHighlight = php_char_to_highlight(trim($token['char']));
|
||||
$tokenHighlight = Highlight::fromPHPToken($token['type']);
|
||||
$charHighlight = Highlight::fromPHPChar(trim($token['char']));
|
||||
|
||||
$hl = match(true) {
|
||||
// Matches a predefined PHP token
|
||||
|
@ -247,13 +247,8 @@ function get_file_syntax_map(): array
|
||||
Syntax::new(
|
||||
'PHP',
|
||||
['.php', 'kilo'],
|
||||
[
|
||||
'?php', '$this', '__halt_compiler'
|
||||
],
|
||||
[
|
||||
'int', 'float', 'bool', 'string', 'true', 'TRUE', 'false', 'FALSE', 'null', 'NULL',
|
||||
'void', 'iterable', 'object', 'strict_types'
|
||||
],
|
||||
[],
|
||||
[],
|
||||
'//',
|
||||
'/*',
|
||||
'*/',
|
||||
@ -286,174 +281,3 @@ function get_file_syntax_map(): array
|
||||
|
||||
return $db;
|
||||
}
|
||||
|
||||
function php_token_to_highlight(int $token): int
|
||||
{
|
||||
return match($token) {
|
||||
// Delimiters
|
||||
T_ARRAY,
|
||||
T_CURLY_OPEN,
|
||||
T_DOLLAR_OPEN_CURLY_BRACES,
|
||||
T_OPEN_TAG,
|
||||
T_OPEN_TAG_WITH_ECHO,
|
||||
T_CLOSE_TAG,
|
||||
T_START_HEREDOC,
|
||||
T_END_HEREDOC => Highlight::DELIMITER,
|
||||
|
||||
// Number literals and magic constants
|
||||
T_CLASS_C,
|
||||
T_DIR,
|
||||
T_DNUMBER,
|
||||
T_LNUMBER,
|
||||
T_FILE,
|
||||
T_FUNC_C,
|
||||
T_LINE,
|
||||
T_METHOD_C,
|
||||
T_NS_C,
|
||||
T_NUM_STRING,
|
||||
T_TRAIT_C => Highlight::NUMBER,
|
||||
|
||||
// String literals
|
||||
T_CONSTANT_ENCAPSED_STRING, T_ENCAPSED_AND_WHITESPACE => Highlight::STRING,
|
||||
|
||||
// Simple variables
|
||||
T_VARIABLE, T_STRING_VARNAME => Highlight::VARIABLE,
|
||||
|
||||
// Operators
|
||||
T_AS,
|
||||
T_AND_EQUAL,
|
||||
T_BOOLEAN_AND,
|
||||
T_BOOLEAN_OR,
|
||||
T_COALESCE,
|
||||
T_COALESCE_EQUAL,
|
||||
T_CONCAT_EQUAL,
|
||||
T_DEC,
|
||||
T_DIV_EQUAL,
|
||||
T_DOUBLE_ARROW,
|
||||
T_DOUBLE_COLON,
|
||||
T_ELLIPSIS,
|
||||
T_INC,
|
||||
T_INSTANCEOF,
|
||||
T_INSTEADOF,
|
||||
T_IS_EQUAL,
|
||||
T_IS_GREATER_OR_EQUAL,
|
||||
T_IS_IDENTICAL,
|
||||
T_IS_NOT_EQUAL,
|
||||
T_IS_NOT_IDENTICAL,
|
||||
T_IS_SMALLER_OR_EQUAL,
|
||||
T_SPACESHIP,
|
||||
T_LOGICAL_AND,
|
||||
T_LOGICAL_OR,
|
||||
T_LOGICAL_XOR,
|
||||
T_MINUS_EQUAL,
|
||||
T_MOD_EQUAL,
|
||||
T_MUL_EQUAL,
|
||||
T_NS_SEPARATOR,
|
||||
T_NULLSAFE_OBJECT_OPERATOR,
|
||||
T_OBJECT_OPERATOR,
|
||||
T_OR_EQUAL,
|
||||
T_PLUS_EQUAL,
|
||||
T_POW,
|
||||
T_POW_EQUAL,
|
||||
T_SL,
|
||||
T_SL_EQUAL,
|
||||
T_SR,
|
||||
T_SR_EQUAL,
|
||||
T_XOR_EQUAL => Highlight::OPERATOR,
|
||||
|
||||
// Keywords1
|
||||
T_ABSTRACT,
|
||||
T_BREAK,
|
||||
T_CASE,
|
||||
T_CATCH,
|
||||
T_CLASS,
|
||||
T_CLONE,
|
||||
T_CONST,
|
||||
T_CONTINUE,
|
||||
T_DECLARE,
|
||||
T_DEFAULT,
|
||||
T_DO,
|
||||
T_ECHO,
|
||||
T_ELSE,
|
||||
T_ELSEIF,
|
||||
T_EMPTY,
|
||||
T_ENDDECLARE,
|
||||
T_ENDFOR,
|
||||
T_ENDFOREACH,
|
||||
T_ENDIF,
|
||||
T_ENDSWITCH,
|
||||
T_ENDWHILE,
|
||||
T_EVAL,
|
||||
T_EXIT,
|
||||
T_EXTENDS,
|
||||
T_FINAL,
|
||||
T_FINALLY,
|
||||
T_FN,
|
||||
T_FOR,
|
||||
T_FOREACH,
|
||||
T_FUNCTION,
|
||||
T_GLOBAL,
|
||||
T_GOTO,
|
||||
T_HALT_COMPILER,
|
||||
T_IF,
|
||||
T_IMPLEMENTS,
|
||||
T_INCLUDE,
|
||||
T_INCLUDE_ONCE,
|
||||
T_INTERFACE,
|
||||
T_ISSET,
|
||||
T_LIST,
|
||||
T_MATCH,
|
||||
T_NAMESPACE,
|
||||
T_NEW,
|
||||
T_PRINT,
|
||||
T_PRIVATE,
|
||||
T_PUBLIC,
|
||||
T_PROTECTED,
|
||||
T_REQUIRE,
|
||||
T_REQUIRE_ONCE,
|
||||
T_RETURN,
|
||||
T_STATIC,
|
||||
T_SWITCH,
|
||||
T_THROW,
|
||||
T_TRAIT,
|
||||
T_TRY,
|
||||
T_UNSET,
|
||||
T_USE,
|
||||
T_VAR,
|
||||
T_WHILE,
|
||||
T_YIELD,
|
||||
T_YIELD_FROM => Highlight::KEYWORD1,
|
||||
|
||||
// Not string literals, but identifiers, keywords, etc.
|
||||
T_STRING => Highlight::IDENTIFIER,
|
||||
|
||||
// Types and casts
|
||||
T_ARRAY_CAST,
|
||||
T_BOOL_CAST,
|
||||
T_CALLABLE,
|
||||
T_DOUBLE_CAST,
|
||||
T_INT_CAST,
|
||||
T_OBJECT_CAST,
|
||||
T_STRING_CAST,
|
||||
T_UNSET_CAST => Highlight::KEYWORD2,
|
||||
|
||||
// Invalid syntax
|
||||
T_BAD_CHARACTER => Highlight::INVALID,
|
||||
|
||||
default => Highlight::NORMAL,
|
||||
};
|
||||
}
|
||||
|
||||
function php_char_to_highlight(string $char): int
|
||||
{
|
||||
return match ($char) {
|
||||
// Delimiter characters
|
||||
'[', ']', '{', '}', '(', ')', '"', "'" => Highlight::DELIMITER,
|
||||
|
||||
// Single character operators
|
||||
'?', ',', ';', ':', '^', '%', '+', '-',
|
||||
'*', '/', '.', '|', '~', '>', '<', '=', '!' => Highlight::OPERATOR,
|
||||
|
||||
default => Highlight::NORMAL,
|
||||
};
|
||||
}
|
||||
|
@ -2714,27 +2714,8 @@
|
||||
".php",
|
||||
"kilo"
|
||||
],
|
||||
"keywords1": [
|
||||
"?php",
|
||||
"$this",
|
||||
"__halt_compiler"
|
||||
],
|
||||
"keywords2": [
|
||||
"int",
|
||||
"float",
|
||||
"bool",
|
||||
"string",
|
||||
"true",
|
||||
"TRUE",
|
||||
"false",
|
||||
"FALSE",
|
||||
"null",
|
||||
"NULL",
|
||||
"void",
|
||||
"iterable",
|
||||
"object",
|
||||
"strict_types"
|
||||
],
|
||||
"keywords1": [],
|
||||
"keywords2": [],
|
||||
"singleLineCommentStart": "\/\/",
|
||||
"multiLineCommentStart": "\/*",
|
||||
"multiLineCommentEnd": "*\/",
|
||||
|
14
tokens.php
14
tokens.php
@ -1,14 +0,0 @@
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
$file = file_get_contents('test.php');
|
||||
$tokens = PhpToken::tokenize($file);
|
||||
|
||||
function addName (PhpToken $token): PhpToken
|
||||
{
|
||||
$token->type = $token->getTokenName();
|
||||
return $token;
|
||||
}
|
||||
|
||||
$tokens = array_map('addName', $tokens);
|
||||
|
||||
var_export($tokens);
|
Loading…
Reference in New Issue
Block a user