Lines Matching +full:- +full:b
13 $this->assertFalse($lexer->parse("abcdef"));
14 $this->assertSame([], $handler->recorded);
21 $lexer->addPattern("a+");
22 $this->assertTrue($lexer->parse(""));
23 $this->assertSame([], $handler->recorded);
30 $lexer->addPattern("a+");
31 $this->assertTrue($lexer->parse("aaaxayyyaxaaaz"));
32 $this->assertSame([
41 ], $handler->recorded);
48 $lexer->addPattern("a+");
49 $lexer->addPattern("b+");
50 $this->assertTrue($lexer->parse("ababbxbaxxxxxxax"));
51 $expected = ['a', 'b', 'a', 'bb', 'x', 'b', 'a', 'xxxxxx', 'a', 'x'];
52 $actual = array_column($handler->recorded, 1);
53 $this->assertSame($expected, $actual);
60 $lexer->addPattern("a+", "a");
61 $lexer->addPattern("b+", "b");
62 $this->assertTrue($lexer->parse("abaabxbaaaxaaaax"));
63 $this->assertSame([
65 ['a', 'b', \DOKU_LEXER_UNMATCHED, 1],
72 ], $handler->recorded);
79 $lexer->addPattern("a+", "a");
80 $lexer->addEntryPattern(":", "a", "b");
81 $lexer->addPattern("b+", "b");
82 $this->assertTrue($lexer->parse("abaabaaa:ababbabbba"));
83 $this->assertSame([
85 ['a', 'b', \DOKU_LEXER_UNMATCHED, 1],
87 ['a', 'b', \DOKU_LEXER_UNMATCHED, 4],
89 ['b', ':', \DOKU_LEXER_ENTER, 8],
90 ['b', 'a', \DOKU_LEXER_UNMATCHED, 9],
91 ['b', 'b', \DOKU_LEXER_MATCHED, 10],
92 ['b', 'a', \DOKU_LEXER_UNMATCHED, 11],
93 ['b', 'bb', \DOKU_LEXER_MATCHED, 12],
94 ['b', 'a', \DOKU_LEXER_UNMATCHED, 14],
95 ['b', 'bbb', \DOKU_LEXER_MATCHED, 15],
96 ['b', 'a', \DOKU_LEXER_UNMATCHED, 18],
97 ], $handler->recorded);
104 $lexer->addPattern("a+", "a");
105 $lexer->addEntryPattern("(", "a", "b");
106 $lexer->addPattern("b+", "b");
107 $lexer->addExitPattern(")", "b");
108 $this->assertTrue($lexer->parse("aabaab(bbabb)aab"));
109 $this->assertSame([
111 ['a', 'b', \DOKU_LEXER_UNMATCHED, 2],
113 ['a', 'b', \DOKU_LEXER_UNMATCHED, 5],
114 ['b', '(', \DOKU_LEXER_ENTER, 6],
115 ['b', 'bb', \DOKU_LEXER_MATCHED, 7],
116 ['b', 'a', \DOKU_LEXER_UNMATCHED, 9],
117 ['b', 'bb', \DOKU_LEXER_MATCHED, 10],
118 ['b', ')', \DOKU_LEXER_EXIT, 12],
120 ['a', 'b', \DOKU_LEXER_UNMATCHED, 15],
121 ], $handler->recorded);
128 $lexer->addPattern("a+", "a");
129 $lexer->addSpecialPattern("b+", "a", "b");
130 $this->assertTrue($lexer->parse("aabaaxxbbbxx"));
131 $this->assertSame([
133 ['b', 'b', \DOKU_LEXER_SPECIAL, 2],
136 ['b', 'bbb', \DOKU_LEXER_SPECIAL, 7],
138 ], $handler->recorded);
145 $lexer->addPattern("a+", "a");
146 $lexer->addExitPattern(")", "a");
147 $this->assertFalse($lexer->parse("aa)aa"));
148 $this->assertSame([
151 ], $handler->recorded);
158 $lexer->addPattern("a+", "mode_a");
159 $lexer->addEntryPattern("(", "mode_a", "mode_b");
160 $lexer->addPattern("b+", "mode_b");
161 $lexer->addExitPattern(")", "mode_b");
162 $lexer->mapHandler("mode_a", "a");
163 $lexer->mapHandler("mode_b", "a");
164 $this->assertTrue($lexer->parse("aa(bbabb)b"));
165 $this->assertSame([
172 ['a', 'b', \DOKU_LEXER_UNMATCHED, 9],
173 ], $handler->recorded);
181 $lexer->addEntryPattern("<file>", "ignore", "caught");
182 $lexer->addExitPattern("</file>", "caught");
183 $lexer->addSpecialPattern('b', 'caught', 'special');
184 $lexer->mapHandler('special', 'caught');
185 $lexer->addPattern('c', 'caught');
186 $this->assertTrue($lexer->parse($doc));
188 $caught = array_values(array_filter($handler->recorded, fn($c) => $c[0] === 'caught'));
189 $this->assertSame([
191 ['caught', 'b', \DOKU_LEXER_SPECIAL, strpos($doc, 'b')],
203 $lexer->addEntryPattern('<file>(?=.*</file>)', "ignore", "caught");
204 $lexer->addExitPattern("</file>", "caught");
205 $lexer->addSpecialPattern('b', 'caught', 'special');
206 $lexer->mapHandler('special', 'caught');
207 $lexer->addPattern('c', 'caught');
208 $this->assertTrue($lexer->parse($doc));
210 $caught = array_values(array_filter($handler->recorded, fn($c) => $c[0] === 'caught'));
211 $this->assertSame([
213 ['caught', 'b', \DOKU_LEXER_SPECIAL, strpos($doc, 'b')],
225 $lexer->addEntryPattern('<file>(?!foo)', "ignore", "caught");
226 $lexer->addExitPattern("</file>", "caught");
227 $lexer->addSpecialPattern('b', 'caught', 'special');
228 $lexer->mapHandler('special', 'caught');
229 $lexer->addPattern('c', 'caught');
230 $this->assertTrue($lexer->parse($doc));
232 $caught = array_values(array_filter($handler->recorded, fn($c) => $c[0] === 'caught'));
233 $this->assertSame([
235 ['caught', 'b', \DOKU_LEXER_SPECIAL, strpos($doc, 'b')],
247 $lexer->addEntryPattern('<file>', "ignore", "caught");
248 $lexer->addExitPattern("(?<=d)</file>", "caught");
249 $lexer->addSpecialPattern('b', 'caught', 'special');
250 $lexer->mapHandler('special', 'caught');
251 $lexer->addPattern('c', 'caught');
252 $this->assertTrue($lexer->parse($doc));
254 $caught = array_values(array_filter($handler->recorded, fn($c) => $c[0] === 'caught'));
255 $this->assertSame([
257 ['caught', 'b', \DOKU_LEXER_SPECIAL, strpos($doc, 'b')],
269 $lexer->addEntryPattern('<file>', 'ignore', 'caught');
270 $lexer->addExitPattern('(?<!c)</file>', 'caught');
271 $lexer->addSpecialPattern('b', 'caught', 'special');
272 $lexer->mapHandler('special', 'caught');
273 $lexer->addPattern('c', 'caught');
274 $this->assertTrue($lexer->parse($doc));
276 $caught = array_values(array_filter($handler->recorded, fn($c) => $c[0] === 'caught'));
277 $this->assertSame([
279 ['caught', 'b', \DOKU_LEXER_SPECIAL, strpos($doc, 'b')],
288 * when there are non-captured elements in the pattern.
293 $pattern = '\bFOO\b';
296 $lexer->addSpecialPattern($pattern, 'ignore', 'caught');
297 $this->assertTrue($lexer->parse($doc));
299 $caught = array_values(array_filter($handler->recorded, fn($c) => $c[0] === 'caught'));
302 $this->assertCount(1, $caught);
303 $this->assertSame('FOO', $caught[0][1]);
304 $this->assertSame(\DOKU_LEXER_SPECIAL, $caught[0][2]);
305 $this->assertSame($matches[0][1], $caught[0][3]);