@@ -30,6 +30,50 @@ class Highlighter
30
30
self ::LINE_NUMBER => 'dark_gray ' ,
31
31
);
32
32
33
+ /** @var array */
34
+ private $ phpTagTokens = array (
35
+ T_OPEN_TAG => T_OPEN_TAG ,
36
+ T_OPEN_TAG_WITH_ECHO => T_OPEN_TAG_WITH_ECHO ,
37
+ T_CLOSE_TAG => T_CLOSE_TAG ,
38
+ );
39
+
40
+ /** @var array */
41
+ private $ magicConstantTokens = array (
42
+ T_DIR => T_DIR ,
43
+ T_FILE => T_FILE ,
44
+ T_LINE => T_LINE ,
45
+ T_CLASS_C => T_CLASS_C ,
46
+ T_FUNC_C => T_FUNC_C ,
47
+ T_METHOD_C => T_METHOD_C ,
48
+ T_NS_C => T_NS_C ,
49
+ T_TRAIT_C => T_TRAIT_C ,
50
+ );
51
+
52
+ /** @var array */
53
+ private $ miscTokens = array (
54
+ T_STRING => T_STRING , // Labels.
55
+ T_VARIABLE => T_VARIABLE ,
56
+ T_DNUMBER => T_DNUMBER , // Floats.
57
+ T_LNUMBER => T_LNUMBER , // Integers.
58
+ );
59
+
60
+ /** @var array */
61
+ private $ commentTokens = array (
62
+ T_COMMENT => T_COMMENT ,
63
+ T_DOC_COMMENT => T_DOC_COMMENT ,
64
+ );
65
+
66
+ /** @var array */
67
+ private $ textStringTokens = array (
68
+ T_ENCAPSED_AND_WHITESPACE => T_ENCAPSED_AND_WHITESPACE ,
69
+ T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING ,
70
+ );
71
+
72
+ /** @var array */
73
+ private $ htmlTokens = array (
74
+ T_INLINE_HTML => T_INLINE_HTML ,
75
+ );
76
+
33
77
/**
34
78
* @param ConsoleColor $color
35
79
* @throws \PHP_Parallel_Lint\PhpConsoleColor\InvalidStyleException
@@ -152,48 +196,31 @@ private function tokenize($source)
152
196
*/
153
197
private function getTokenType ($ arrayToken )
154
198
{
155
- switch ($ arrayToken [0 ]) {
156
- case T_OPEN_TAG :
157
- case T_OPEN_TAG_WITH_ECHO :
158
- case T_CLOSE_TAG :
159
- case T_STRING :
160
- case T_VARIABLE :
161
- // Constants
162
- case T_DIR :
163
- case T_FILE :
164
- case T_METHOD_C :
165
- case T_DNUMBER :
166
- case T_LNUMBER :
167
- case T_NS_C :
168
- case T_LINE :
169
- case T_CLASS_C :
170
- case T_FUNC_C :
171
- case T_TRAIT_C :
199
+ switch (true ) {
200
+ case isset ($ this ->phpTagTokens [$ arrayToken [0 ]]):
201
+ case isset ($ this ->magicConstantTokens [$ arrayToken [0 ]]):
202
+ case isset ($ this ->miscTokens [$ arrayToken [0 ]]):
172
203
return self ::TOKEN_DEFAULT ;
173
204
174
- case T_COMMENT :
175
- case T_DOC_COMMENT :
205
+ case isset ($ this ->commentTokens [$ arrayToken [0 ]]):
176
206
return self ::TOKEN_COMMENT ;
177
207
178
- case T_ENCAPSED_AND_WHITESPACE :
179
- case T_CONSTANT_ENCAPSED_STRING :
208
+ case isset ($ this ->textStringTokens [$ arrayToken [0 ]]):
180
209
return self ::TOKEN_STRING ;
181
210
182
- case T_INLINE_HTML :
211
+ case isset ( $ this -> htmlTokens [ $ arrayToken [ 0 ]]) :
183
212
return self ::TOKEN_HTML ;
184
213
}
185
214
186
215
// phpcs:disable PHPCompatibility.Constants.NewConstants -- The new token constants are only used when defined.
187
216
188
217
// Handle PHP >= 8.0 namespaced name tokens.
189
218
// https://www.php.net/manual/en/migration80.incompatible.php#migration80.incompatible.tokenizer
190
- if (defined ('T_NAME_QUALIFIED ' ) && $ arrayToken [0 ] === T_NAME_QUALIFIED ) {
191
- return self ::TOKEN_DEFAULT ;
192
- }
193
- if (defined ('T_NAME_FULLY_QUALIFIED ' ) && $ arrayToken [0 ] === T_NAME_FULLY_QUALIFIED ) {
194
- return self ::TOKEN_DEFAULT ;
195
- }
196
- if (defined ('T_NAME_RELATIVE ' ) && $ arrayToken [0 ] === T_NAME_RELATIVE ) {
219
+ if (
220
+ (defined ('T_NAME_QUALIFIED ' ) && $ arrayToken [0 ] === T_NAME_QUALIFIED )
221
+ || (defined ('T_NAME_FULLY_QUALIFIED ' ) && $ arrayToken [0 ] === T_NAME_FULLY_QUALIFIED )
222
+ || (defined ('T_NAME_RELATIVE ' ) && $ arrayToken [0 ] === T_NAME_RELATIVE )
223
+ ) {
197
224
return self ::TOKEN_DEFAULT ;
198
225
}
199
226
0 commit comments