PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 11.1.1
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v11.1.1
11.1.1 11.1.0 11.0.5 11.0.4 11.0.3 11.0.2 11.0.1 11.0.0 10.11.1 10.11.0 10.10.2 10.10.1 10.10.0 10.9.1 trunk 10.0.0 10.0.1 10.1.0 10.1.1 10.1.2 10.1.3 10.1.4 10.2.0 10.2.1 10.2.2 All 62 releases
← All changes | back/Libraries/Symfony/CssSelector/Parser/TokenStream.php +0 -171 trunk → 11.1.1 View file →
@@ -1,171 +1,0 @@
1 -<?php
2 -
3 -/*
4 - * This file is part of the Symfony package.
5 - *
6 - * (c) Fabien Potencier <[email protected]>
7 - *
8 - * For the full copyright and license information, please view the LICENSE
9 - * file that was distributed with this source code.
10 - */
11 -
12 -namespace AcyMailing\Libraries\Symfony\CssSelector\Parser;
13 -
14 -use AcyMailing\Libraries\Symfony\CssSelector\Exception\InternalErrorException;
15 -use AcyMailing\Libraries\Symfony\CssSelector\Exception\SyntaxErrorException;
16 -
17 -/**
18 - * CSS selector token stream.
19 - *
20 - * This component is a port of the Python cssselect library,
21 - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
22 - *
23 - * @author Jean-François Simon <[email protected]>
24 - *
25 - * @internal
26 - */
27 -class TokenStream
28 -{
29 - /**
30 - * @var Token[]
31 - */
32 - private $tokens = [];
33 -
34 - /**
35 - * @var Token[]
36 - */
37 - private $used = [];
38 -
39 - /**
40 - * @var int
41 - */
42 - private $cursor = 0;
43 -
44 - /**
45 - * @var Token|null
46 - */
47 - private $peeked;
48 -
49 - /**
50 - * @var bool
51 - */
52 - private $peeking = false;
53 -
54 - /**
55 - * Pushes a token.
56 - *
57 - * @return $this
58 - */
59 - public function push(Token $token): self
60 - {
61 - $this->tokens[] = $token;
62 -
63 - return $this;
64 - }
65 -
66 - /**
67 - * Freezes stream.
68 - *
69 - * @return $this
70 - */
71 - public function freeze(): self
72 - {
73 - return $this;
74 - }
75 -
76 - /**
77 - * Returns next token.
78 - *
79 - * @throws InternalErrorException If there is no more token
80 - */
81 - public function getNext(): Token
82 - {
83 - if ($this->peeking) {
84 - $this->peeking = false;
85 - $this->used[] = $this->peeked;
86 -
87 - return $this->peeked;
88 - }
89 -
90 - if (!isset($this->tokens[$this->cursor])) {
91 - throw new InternalErrorException('Unexpected token stream end.');
92 - }
93 -
94 - return $this->tokens[$this->cursor++];
95 - }
96 -
97 - /**
98 - * Returns peeked token.
99 - */
100 - public function getPeek(): Token
101 - {
102 - if (!$this->peeking) {
103 - $this->peeked = $this->getNext();
104 - $this->peeking = true;
105 - }
106 -
107 - return $this->peeked;
108 - }
109 -
110 - /**
111 - * Returns used tokens.
112 - *
113 - * @return Token[]
114 - */
115 - public function getUsed(): array
116 - {
117 - return $this->used;
118 - }
119 -
120 - /**
121 - * Returns nex identifier token.
122 - *
123 - * @return string The identifier token value
124 - *
125 - * @throws SyntaxErrorException If next token is not an identifier
126 - */
127 - public function getNextIdentifier(): string
128 - {
129 - $next = $this->getNext();
130 -
131 - if (!$next->isIdentifier()) {
132 - throw SyntaxErrorException::unexpectedToken('identifier', $next);
133 - }
134 -
135 - return $next->getValue();
136 - }
137 -
138 - /**
139 - * Returns nex identifier or star delimiter token.
140 - *
141 - * @return string|null The identifier token value or null if star found
142 - *
143 - * @throws SyntaxErrorException If next token is not an identifier or a star delimiter
144 - */
145 - public function getNextIdentifierOrStar(): ?string
146 - {
147 - $next = $this->getNext();
148 -
149 - if ($next->isIdentifier()) {
150 - return $next->getValue();
151 - }
152 -
153 - if ($next->isDelimiter(['*'])) {
154 - return null;
155 - }
156 -
157 - throw SyntaxErrorException::unexpectedToken('identifier or "*"', $next);
158 - }
159 -
160 - /**
161 - * Skips next whitespace if any.
162 - */
163 - public function skipWhitespace()
164 - {
165 - $peek = $this->getPeek();
166 -
167 - if ($peek->isWhitespace()) {
168 - $this->getNext();
169 - }
170 - }
171 -}