Skip to content

Commit 3f088ef

Browse files
🔧 Copy constant to have better twig version support
1 parent 93fe82a commit 3f088ef

File tree

2 files changed

+25
-28
lines changed

2 files changed

+25
-28
lines changed

TwigCS/Token/Token.php

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,26 @@
22

33
namespace TwigCS\Token;
44

5-
use Twig\Token as TwigToken;
6-
75
/**
86
* Class Token
97
*/
108
class Token
119
{
1210
// From Twig\Token
13-
const EOF_TYPE = TwigToken::EOF_TYPE;
14-
const TEXT_TYPE = TwigToken::TEXT_TYPE;
15-
const BLOCK_START_TYPE = TwigToken::BLOCK_START_TYPE;
16-
const VAR_START_TYPE = TwigToken::VAR_START_TYPE;
17-
const BLOCK_END_TYPE = TwigToken::BLOCK_END_TYPE;
18-
const VAR_END_TYPE = TwigToken::VAR_END_TYPE;
19-
const NAME_TYPE = TwigToken::NAME_TYPE;
20-
const NUMBER_TYPE = TwigToken::NUMBER_TYPE;
21-
const STRING_TYPE = TwigToken::STRING_TYPE;
22-
const OPERATOR_TYPE = TwigToken::OPERATOR_TYPE;
23-
const PUNCTUATION_TYPE = TwigToken::PUNCTUATION_TYPE;
24-
const INTERPOLATION_START_TYPE = TwigToken::INTERPOLATION_START_TYPE;
25-
const INTERPOLATION_END_TYPE = TwigToken::INTERPOLATION_END_TYPE;
26-
const ARROW_TYPE = TwigToken::ARROW_TYPE;
11+
const EOF_TYPE = -1;
12+
const TEXT_TYPE = 0;
13+
const BLOCK_START_TYPE = 1;
14+
const VAR_START_TYPE = 2;
15+
const BLOCK_END_TYPE = 3;
16+
const VAR_END_TYPE = 4;
17+
const NAME_TYPE = 5;
18+
const NUMBER_TYPE = 6;
19+
const STRING_TYPE = 7;
20+
const OPERATOR_TYPE = 8;
21+
const PUNCTUATION_TYPE = 9;
22+
const INTERPOLATION_START_TYPE = 10;
23+
const INTERPOLATION_END_TYPE = 11;
24+
const ARROW_TYPE = 12;
2725
// New constants
2826
const WHITESPACE_TYPE = 13;
2927
const TAB_TYPE = 14;

TwigCS/Token/Tokenizer.php

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,26 @@
44

55
use \Exception;
66
use Twig\Environment;
7-
use Twig\Lexer;
87
use Twig\Source;
98

109
/**
1110
* An override of Twig's Lexer to add whitespace and new line detection.
1211
*/
1312
class Tokenizer
1413
{
15-
const STATE_DATA = Lexer::STATE_DATA;
16-
const STATE_BLOCK = Lexer::STATE_BLOCK;
17-
const STATE_VAR = Lexer::STATE_VAR;
18-
const STATE_STRING = Lexer::STATE_STRING;
19-
const STATE_INTERPOLATION = Lexer::STATE_INTERPOLATION;
14+
const STATE_DATA = 0;
15+
const STATE_BLOCK = 1;
16+
const STATE_VAR = 2;
17+
const STATE_STRING = 3;
18+
const STATE_INTERPOLATION = 4;
2019
const STATE_COMMENT = 5;
2120

22-
const REGEX_NAME = Lexer::REGEX_NAME;
23-
const REGEX_NUMBER = Lexer::REGEX_NUMBER;
24-
const REGEX_STRING = Lexer::REGEX_STRING;
25-
const REGEX_DQ_STRING_DELIM = Lexer::REGEX_DQ_STRING_DELIM;
26-
const REGEX_DQ_STRING_PART = Lexer::REGEX_DQ_STRING_PART;
27-
const PUNCTUATION = Lexer::PUNCTUATION;
21+
const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A';
22+
const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?/A';
23+
const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As';
24+
const REGEX_DQ_STRING_DELIM = '/"/A';
25+
const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As';
26+
const PUNCTUATION = '()[]{}?:.,|';
2827

2928
/**
3029
* @var array

0 commit comments

Comments
 (0)