Skip to content

Commit b6e254a

Browse files
jrfnlgrogy
authored andcommitted
Highlighter::getTokenType(): refactor to lower complexity
Rewrite the method to use predefined token lists. Includes removing the PHPCS ruleset tweak put in place in an earlier commit. Fixes 11
1 parent 82d99c2 commit b6e254a

File tree

2 files changed

+56
-33
lines changed

2 files changed

+56
-33
lines changed

phpcs.xml.dist

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@
4040

4141
<rule ref="PHPParallelLint"/>
4242

43-
<rule ref="Generic.Metrics.CyclomaticComplexity.MaxExceeded">
44-
<type>warning</type>
45-
</rule>
46-
4743
<rule ref="Generic.Files.LineLength">
4844
<exclude-pattern>*/tests/*</exclude-pattern>
4945
</rule>

src/Highlighter.php

Lines changed: 56 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,50 @@ class Highlighter
3030
self::LINE_NUMBER => 'dark_gray',
3131
);
3232

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+
3377
/**
3478
* @param ConsoleColor $color
3579
* @throws \PHP_Parallel_Lint\PhpConsoleColor\InvalidStyleException
@@ -152,48 +196,31 @@ private function tokenize($source)
152196
*/
153197
private function getTokenType($arrayToken)
154198
{
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]]):
172203
return self::TOKEN_DEFAULT;
173204

174-
case T_COMMENT:
175-
case T_DOC_COMMENT:
205+
case isset($this->commentTokens[$arrayToken[0]]):
176206
return self::TOKEN_COMMENT;
177207

178-
case T_ENCAPSED_AND_WHITESPACE:
179-
case T_CONSTANT_ENCAPSED_STRING:
208+
case isset($this->textStringTokens[$arrayToken[0]]):
180209
return self::TOKEN_STRING;
181210

182-
case T_INLINE_HTML:
211+
case isset($this->htmlTokens[$arrayToken[0]]):
183212
return self::TOKEN_HTML;
184213
}
185214

186215
// phpcs:disable PHPCompatibility.Constants.NewConstants -- The new token constants are only used when defined.
187216

188217
// Handle PHP >= 8.0 namespaced name tokens.
189218
// 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+
) {
197224
return self::TOKEN_DEFAULT;
198225
}
199226

0 commit comments

Comments
 (0)