Skip to content

Commit 73838c7

Browse files
committed
Add memoization for MatcherFactory methods that lack it
Only two zero-argument methods lack caching, they were both recently added. Change-Id: Ibe3421c183331fff28b8adf3ec0b7c65612fd8e0
1 parent ce20045 commit 73838c7

File tree

1 file changed

+48
-46
lines changed

1 file changed

+48
-46
lines changed

src/Grammar/MatcherFactory.php

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -266,9 +266,10 @@ protected function rawInteger() {
266266
* @return TokenMatcher
267267
*/
268268
public function colorHex(): TokenMatcher {
269-
return new TokenMatcher( Token::T_HASH, static function ( Token $t ) {
270-
return preg_match( '/^([0-9a-f]{3}|[0-9a-f]{6})$/i', $t->value() );
271-
} );
269+
return $this->cache[__METHOD__]
270+
??= new TokenMatcher( Token::T_HASH, static function ( Token $t ) {
271+
return preg_match( '/^([0-9a-f]{3}|[0-9a-f]{6})$/i', $t->value() );
272+
} );
272273
}
273274

274275
/**
@@ -1451,49 +1452,50 @@ public function cssNegation() {
14511452
* @return KeywordMatcher
14521453
*/
14531454
public function colorWords(): KeywordMatcher {
1454-
return new KeywordMatcher( [
1455-
// Basic colors
1456-
'aqua', 'black', 'blue', 'fuchsia', 'gray', 'green',
1457-
'lime', 'maroon', 'navy', 'olive', 'purple', 'red',
1458-
'silver', 'teal', 'white', 'yellow',
1459-
// Extended colors
1460-
'aliceblue', 'antiquewhite', 'aquamarine', 'azure',
1461-
'beige', 'bisque', 'blanchedalmond', 'blueviolet', 'brown',
1462-
'burlywood', 'cadetblue', 'chartreuse', 'chocolate',
1463-
'coral', 'cornflowerblue', 'cornsilk', 'crimson', 'cyan',
1464-
'darkblue', 'darkcyan', 'darkgoldenrod', 'darkgray',
1465-
'darkgreen', 'darkgrey', 'darkkhaki', 'darkmagenta',
1466-
'darkolivegreen', 'darkorange', 'darkorchid', 'darkred',
1467-
'darksalmon', 'darkseagreen', 'darkslateblue',
1468-
'darkslategray', 'darkslategrey', 'darkturquoise',
1469-
'darkviolet', 'deeppink', 'deepskyblue', 'dimgray',
1470-
'dimgrey', 'dodgerblue', 'firebrick', 'floralwhite',
1471-
'forestgreen', 'gainsboro', 'ghostwhite', 'gold',
1472-
'goldenrod', 'greenyellow', 'grey', 'honeydew', 'hotpink',
1473-
'indianred', 'indigo', 'ivory', 'khaki', 'lavender',
1474-
'lavenderblush', 'lawngreen', 'lemonchiffon', 'lightblue',
1475-
'lightcoral', 'lightcyan', 'lightgoldenrodyellow',
1476-
'lightgray', 'lightgreen', 'lightgrey', 'lightpink',
1477-
'lightsalmon', 'lightseagreen', 'lightskyblue',
1478-
'lightslategray', 'lightslategrey', 'lightsteelblue',
1479-
'lightyellow', 'limegreen', 'linen', 'magenta',
1480-
'mediumaquamarine', 'mediumblue', 'mediumorchid',
1481-
'mediumpurple', 'mediumseagreen', 'mediumslateblue',
1482-
'mediumspringgreen', 'mediumturquoise', 'mediumvioletred',
1483-
'midnightblue', 'mintcream', 'mistyrose', 'moccasin',
1484-
'navajowhite', 'oldlace', 'olivedrab', 'orange',
1485-
'orangered', 'orchid', 'palegoldenrod', 'palegreen',
1486-
'paleturquoise', 'palevioletred', 'papayawhip',
1487-
'peachpuff', 'peru', 'pink', 'plum', 'powderblue',
1488-
'rosybrown', 'royalblue', 'saddlebrown', 'salmon',
1489-
'sandybrown', 'seagreen', 'seashell', 'sienna', 'skyblue',
1490-
'slateblue', 'slategray', 'slategrey', 'snow',
1491-
'springgreen', 'steelblue', 'tan', 'thistle', 'tomato',
1492-
'turquoise', 'violet', 'wheat', 'whitesmoke',
1493-
'yellowgreen',
1494-
// Other keywords. Intentionally omitting the deprecated system colors.
1495-
'transparent', 'currentColor',
1496-
] );
1455+
return $this->cache[__METHOD__]
1456+
??= new KeywordMatcher( [
1457+
// Basic colors
1458+
'aqua', 'black', 'blue', 'fuchsia', 'gray', 'green',
1459+
'lime', 'maroon', 'navy', 'olive', 'purple', 'red',
1460+
'silver', 'teal', 'white', 'yellow',
1461+
// Extended colors
1462+
'aliceblue', 'antiquewhite', 'aquamarine', 'azure',
1463+
'beige', 'bisque', 'blanchedalmond', 'blueviolet', 'brown',
1464+
'burlywood', 'cadetblue', 'chartreuse', 'chocolate',
1465+
'coral', 'cornflowerblue', 'cornsilk', 'crimson', 'cyan',
1466+
'darkblue', 'darkcyan', 'darkgoldenrod', 'darkgray',
1467+
'darkgreen', 'darkgrey', 'darkkhaki', 'darkmagenta',
1468+
'darkolivegreen', 'darkorange', 'darkorchid', 'darkred',
1469+
'darksalmon', 'darkseagreen', 'darkslateblue',
1470+
'darkslategray', 'darkslategrey', 'darkturquoise',
1471+
'darkviolet', 'deeppink', 'deepskyblue', 'dimgray',
1472+
'dimgrey', 'dodgerblue', 'firebrick', 'floralwhite',
1473+
'forestgreen', 'gainsboro', 'ghostwhite', 'gold',
1474+
'goldenrod', 'greenyellow', 'grey', 'honeydew', 'hotpink',
1475+
'indianred', 'indigo', 'ivory', 'khaki', 'lavender',
1476+
'lavenderblush', 'lawngreen', 'lemonchiffon', 'lightblue',
1477+
'lightcoral', 'lightcyan', 'lightgoldenrodyellow',
1478+
'lightgray', 'lightgreen', 'lightgrey', 'lightpink',
1479+
'lightsalmon', 'lightseagreen', 'lightskyblue',
1480+
'lightslategray', 'lightslategrey', 'lightsteelblue',
1481+
'lightyellow', 'limegreen', 'linen', 'magenta',
1482+
'mediumaquamarine', 'mediumblue', 'mediumorchid',
1483+
'mediumpurple', 'mediumseagreen', 'mediumslateblue',
1484+
'mediumspringgreen', 'mediumturquoise', 'mediumvioletred',
1485+
'midnightblue', 'mintcream', 'mistyrose', 'moccasin',
1486+
'navajowhite', 'oldlace', 'olivedrab', 'orange',
1487+
'orangered', 'orchid', 'palegoldenrod', 'palegreen',
1488+
'paleturquoise', 'palevioletred', 'papayawhip',
1489+
'peachpuff', 'peru', 'pink', 'plum', 'powderblue',
1490+
'rosybrown', 'royalblue', 'saddlebrown', 'salmon',
1491+
'sandybrown', 'seagreen', 'seashell', 'sienna', 'skyblue',
1492+
'slateblue', 'slategray', 'slategrey', 'snow',
1493+
'springgreen', 'steelblue', 'tan', 'thistle', 'tomato',
1494+
'turquoise', 'violet', 'wheat', 'whitesmoke',
1495+
'yellowgreen',
1496+
// Other keywords. Intentionally omitting the deprecated system colors.
1497+
'transparent', 'currentColor',
1498+
] );
14971499
}
14981500

14991501
/** @} */

0 commit comments

Comments
 (0)