File: integration.mwtest

package info (click to toggle)
mwparserfromhell 0.6.6-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,176 kB
  • sloc: python: 7,518; ansic: 4,462; sh: 139; makefile: 127
file content (368 lines) | stat: -rw-r--r-- 25,347 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
name:   empty
label:  sanity check that parsing an empty string yields nothing
input:  ""
output: []

---

name:   template_argument_mix
label:  an ambiguous mix of templates and arguments
input:  "{{{{{{{{foo}}}}}}}}{{{{{{{bar}}baz}}}buz}}"
output: [TemplateOpen(), ArgumentOpen(), ArgumentOpen(), Text(text="foo"), ArgumentClose(), ArgumentClose(), TemplateClose(), TemplateOpen(), ArgumentOpen(), TemplateOpen(), Text(text="bar"), TemplateClose(), Text(text="baz"), ArgumentClose(), Text(text="buz"), TemplateClose()]

---

name:   link_in_template_name
label:  a wikilink inside a template name, which breaks the template
input:  "{{foo[[bar]]}}"
output: [Text(text="{{foo"), WikilinkOpen(), Text(text="bar"), WikilinkClose(), Text(text="}}")]

---

name:   rich_heading
label:  a heading with templates/wikilinks in it
input:  "== Head{{ing}} [[with]] {{{funky|{{stuf}}}}} =="
output: [HeadingStart(level=2), Text(text=" Head"), TemplateOpen(), Text(text="ing"), TemplateClose(), Text(text=" "), WikilinkOpen(), Text(text="with"), WikilinkClose(), Text(text=" "), ArgumentOpen(), Text(text="funky"), ArgumentSeparator(), TemplateOpen(), Text(text="stuf"), TemplateClose(), ArgumentClose(), Text(text=" "), HeadingEnd()]

---

name:   html_entity_with_template
label:  a HTML entity with a template embedded inside
input:  "&n{{bs}}p;"
output: [Text(text="&n"), TemplateOpen(), Text(text="bs"), TemplateClose(), Text(text="p;")]

---

name:   html_entity_with_comment
label:  a HTML entity with a comment embedded inside
input:  "&n<!--foo-->bsp;"
output: [Text(text="&n"), CommentStart(), Text(text="foo"), CommentEnd(), Text(text="bsp;")]

---

name:   rich_tags
label:  a HTML tag with tons of other things in it
input:  "{{dubious claim}}<ref name={{abc}}   foo="bar {{baz}}" abc={{de}}f ghi=j{{k}}{{l}} \n mno =  "{{p}} [[q]] {{r}}">[[Source]]</ref>"
output: [TemplateOpen(), Text(text="dubious claim"), TemplateClose(), TagOpenOpen(), Text(text="ref"), TagAttrStart(pad_first=" ", pad_before_eq="", pad_after_eq=""), Text(text="name"), TagAttrEquals(), TemplateOpen(), Text(text="abc"), TemplateClose(), TagAttrStart(pad_first="   ", pad_before_eq="", pad_after_eq=""), Text(text="foo"), TagAttrEquals(), TagAttrQuote(char="\""), Text(text="bar "), TemplateOpen(), Text(text="baz"), TemplateClose(), TagAttrStart(pad_first=" ", pad_before_eq="", pad_after_eq=""), Text(text="abc"), TagAttrEquals(), TemplateOpen(), Text(text="de"), TemplateClose(), Text(text="f"), TagAttrStart(pad_first=" ", pad_before_eq="", pad_after_eq=""), Text(text="ghi"), TagAttrEquals(), Text(text="j"), TemplateOpen(), Text(text="k"), TemplateClose(), TemplateOpen(), Text(text="l"), TemplateClose(), TagAttrStart(pad_first=" \n ", pad_before_eq=" ", pad_after_eq="  "), Text(text="mno"), TagAttrEquals(), TagAttrQuote(char="\""), TemplateOpen(), Text(text="p"), TemplateClose(), Text(text=" "), WikilinkOpen(), Text(text="q"), WikilinkClose(), Text(text=" "), TemplateOpen(), Text(text="r"), TemplateClose(), TagCloseOpen(padding=""), WikilinkOpen(), Text(text="Source"), WikilinkClose(), TagOpenClose(), Text(text="ref"), TagCloseClose()]

---

name:   wildcard
label:  a wildcard assortment of various things
input:  "{{{{{{{{foo}}bar|baz=biz}}buzz}}usr|{{bin}}}}"
output: [TemplateOpen(), TemplateOpen(), TemplateOpen(), TemplateOpen(), Text(text="foo"), TemplateClose(), Text(text="bar"), TemplateParamSeparator(), Text(text="baz"), TemplateParamEquals(), Text(text="biz"), TemplateClose(), Text(text="buzz"), TemplateClose(), Text(text="usr"), TemplateParamSeparator(), TemplateOpen(), Text(text="bin"), TemplateClose(), TemplateClose()]

---

name:   wildcard_redux
label:  an even wilder assortment of various things
input:  "{{a|b|{{c|[[d]]{{{e}}}}}}}[[f|{{{g}}}<!--h-->]]{{i|j=&nbsp;}}"
output: [TemplateOpen(), Text(text="a"), TemplateParamSeparator(), Text(text="b"), TemplateParamSeparator(), TemplateOpen(), Text(text="c"), TemplateParamSeparator(), WikilinkOpen(), Text(text="d"), WikilinkClose(), ArgumentOpen(), Text(text="e"), ArgumentClose(), TemplateClose(), TemplateClose(), WikilinkOpen(), Text(text="f"), WikilinkSeparator(), ArgumentOpen(), Text(text="g"), ArgumentClose(), CommentStart(), Text(text="h"), CommentEnd(), WikilinkClose(), TemplateOpen(), Text(text="i"), TemplateParamSeparator(), Text(text="j"), TemplateParamEquals(), HTMLEntityStart(), Text(text="nbsp"), HTMLEntityEnd(), TemplateClose()]

---

name:   link_inside_dl
label:  an external link inside a def list, such that the external link is parsed
input:  ";;;mailto:example"
output: [TagOpenOpen(wiki_markup=";"), Text(text="dt"), TagCloseSelfclose(), TagOpenOpen(wiki_markup=";"), Text(text="dt"), TagCloseSelfclose(), TagOpenOpen(wiki_markup=";"), Text(text="dt"), TagCloseSelfclose(), ExternalLinkOpen(brackets=False), Text(text="mailto:example"), ExternalLinkClose()]

---

name:   link_inside_dl_2
label:  an external link inside a def list, such that the external link is not parsed
input:  ";;;malito:example"
output: [TagOpenOpen(wiki_markup=";"), Text(text="dt"), TagCloseSelfclose(), TagOpenOpen(wiki_markup=";"), Text(text="dt"), TagCloseSelfclose(), TagOpenOpen(wiki_markup=";"), Text(text="dt"), TagCloseSelfclose(), Text(text="malito"), TagOpenOpen(wiki_markup=":"), Text(text="dd"), TagCloseSelfclose(), Text(text="example")]

---

name:   link_inside_template
label:  an external link nested inside a template, before the end
input:  "{{URL|http://example.com}}"
output: [TemplateOpen(), Text(text="URL"), TemplateParamSeparator(), ExternalLinkOpen(brackets=False), Text(text="http://example.com"), ExternalLinkClose(), TemplateClose()]

---

name:   link_inside_template_2
label:  an external link nested inside a template, before a separator
input:  "{{URL|http://example.com|foobar}}"
output: [TemplateOpen(), Text(text="URL"), TemplateParamSeparator(), ExternalLinkOpen(brackets=False), Text(text="http://example.com"), ExternalLinkClose(), TemplateParamSeparator(), Text(text="foobar"), TemplateClose()]

---

name:   link_inside_template_3
label:  an external link nested inside a template, before an equal sign
input:  "{{URL|http://example.com=foobar}}"
output: [TemplateOpen(), Text(text="URL"), TemplateParamSeparator(), ExternalLinkOpen(brackets=False), Text(text="http://example.com"), ExternalLinkClose(), TemplateParamEquals(), Text(text="foobar"), TemplateClose()]

---

name:   link_inside_argument
label:  an external link nested inside an argument
input:  "{{{URL|http://example.com}}}"
output: [ArgumentOpen(), Text(text="URL"), ArgumentSeparator(), ExternalLinkOpen(brackets=False), Text(text="http://example.com"), ExternalLinkClose(), ArgumentClose()]

---

name:   link_inside_heading
label:  an external link nested inside a heading
input:  "==http://example.com=="
output: [HeadingStart(level=2), ExternalLinkOpen(brackets=False), Text(text="http://example.com"), ExternalLinkClose(), HeadingEnd()]

---

name:   link_inside_tag_body
label:  an external link nested inside the body of a tag
input:  "<ref>http://example.com</ref>"
output: [TagOpenOpen(), Text(text="ref"), TagCloseOpen(padding=""), ExternalLinkOpen(brackets=False), Text(text="http://example.com"), ExternalLinkClose(), TagOpenClose(), Text(text="ref"), TagCloseClose()]

---

name:   link_inside_tag_style
label:  an external link nested inside style tags
input:  "''http://example.com''"
output: [TagOpenOpen(wiki_markup="''"), Text(text="i"), TagCloseOpen(), ExternalLinkOpen(brackets=False), Text(text="http://example.com"), ExternalLinkClose(), TagOpenClose(), Text(text="i"), TagCloseClose()]

---

name:   style_tag_inside_link
label:  style tags disrupting an external link
input:  "http://example.com/foo''bar''"
output: [ExternalLinkOpen(brackets=False), Text(text="http://example.com/foo"), ExternalLinkClose(), TagOpenOpen(wiki_markup="''"), Text(text="i"), TagCloseOpen(), Text(text="bar"), TagOpenClose(), Text(text="i"), TagCloseClose()]

---

name:   comment_inside_link
label:  an HTML comment inside an external link
input:  "http://example.com/foo<!--comment-->bar"
output: [ExternalLinkOpen(brackets=False), Text(text="http://example.com/foo"), CommentStart(), Text(text="comment"), CommentEnd(), Text(text="bar"), ExternalLinkClose()]

---

name:   bracketed_link_inside_template
label:  a bracketed external link nested inside a template, before the end
input:  "{{URL|[http://example.com}}]"
output: [Text(text="{{URL|"), ExternalLinkOpen(brackets=True), Text(text="http://example.com}}"), ExternalLinkClose()]

---

name:   comment_inside_bracketed_link
label:  an HTML comment inside a bracketed external link
input:  "[http://example.com/foo<!--comment-->bar]"
output: [ExternalLinkOpen(brackets=True), Text(text="http://example.com/foo"), CommentStart(), Text(text="comment"), CommentEnd(), Text(text="bar"), ExternalLinkClose()]

---

name:   wikilink_inside_external_link
label:  a wikilink inside an external link, which the parser considers valid (see issue #61)
input:  "[http://example.com/foo Foo [[Bar]]]"
output: [ExternalLinkOpen(brackets=True), Text(text="http://example.com/foo"), ExternalLinkSeparator(), Text(text="Foo "), WikilinkOpen(), Text(text="Bar"), WikilinkClose(), ExternalLinkClose()]

---

name:   external_link_inside_wikilink
label:  an external link inside a wikilink, valid in the case of images (see issue #62)
input:  "[[File:Example.png|thumb|http://example.com]]"
output: [WikilinkOpen(), Text(text="File:Example.png"), WikilinkSeparator(), Text(text="thumb|"), ExternalLinkOpen(brackets=False), Text(text="http://example.com"), ExternalLinkClose(), WikilinkClose()]

---

name:   external_link_inside_wikilink_brackets
label:  an external link with brackets inside a wikilink
input:  "[[File:Example.png|thumb|[http://example.com Example]]]"
output: [WikilinkOpen(), Text(text="File:Example.png"), WikilinkSeparator(), Text(text="thumb|"), ExternalLinkOpen(brackets=True), Text(text="http://example.com"), ExternalLinkSeparator(), Text(text="Example"), ExternalLinkClose(), WikilinkClose()]

---

name:   external_link_inside_wikilink_title
label:  an external link inside a wikilink title, which is not parsed
input:  "[[File:Example.png http://example.com]]"
output: [WikilinkOpen(), Text(text="File:Example.png http://example.com"), WikilinkClose()]

---

name:   italics_inside_external_link_inside_incomplete_list
label:  italic text inside an external link inside an incomplete list
input:  "<li>[http://www.example.com ''example'']"
output: [TagOpenOpen(), Text(text="li"), TagCloseSelfclose(padding="", implicit=True), ExternalLinkOpen(brackets=True), Text(text="http://www.example.com"), ExternalLinkSeparator(), TagOpenOpen(wiki_markup="''"), Text(text="i"), TagCloseOpen(), Text(text="example"), TagOpenClose(), Text(text="i"), TagCloseClose(), ExternalLinkClose()]

---

name:   nodes_inside_external_link_after_punct
label:  various complex nodes inside an external link following punctuation
input:  "http://example.com/foo.{{bar}}baz.&biz;<!--hello-->bingo"
output: [ExternalLinkOpen(brackets=False), Text(text="http://example.com/foo."), TemplateOpen(), Text(text="bar"), TemplateClose(), Text(text="baz.&biz;"), CommentStart(), Text(text="hello"), CommentEnd(), Text(text="bingo"), ExternalLinkClose()]

---

name:   newline_and_comment_in_template_name
label:  a template name containing a newline followed by a comment
input:  "{{foobar\n<!-- comment -->}}"
output: [TemplateOpen(), Text(text="foobar\n"), CommentStart(), Text(text=" comment "), CommentEnd(), TemplateClose()]

---

name:   newline_and_comment_in_template_name_2
label:  a template name containing a newline followed by a comment
input:  "{{foobar\n<!-- comment -->|key=value}}"
output: [TemplateOpen(), Text(text="foobar\n"), CommentStart(), Text(text=" comment "), CommentEnd(), TemplateParamSeparator(), Text(text="key"), TemplateParamEquals(), Text(text="value"), TemplateClose()]

---

name:   newline_and_comment_in_template_name_3
label:  a template name containing a newline followed by a comment
input:  "{{foobar\n<!-- comment -->\n|key=value}}"
output: [TemplateOpen(), Text(text="foobar\n"), CommentStart(), Text(text=" comment "), CommentEnd(), Text(text="\n"), TemplateParamSeparator(), Text(text="key"), TemplateParamEquals(), Text(text="value"), TemplateClose()]

---

name:   newline_and_comment_in_template_name_4
label:  a template name containing a newline followed by a comment
input:  "{{foobar\n<!-- comment -->invalid|key=value}}"
output: [Text(text="{{foobar\n"), CommentStart(), Text(text=" comment "), CommentEnd(), Text(text="invalid|key=value}}")]

---

name:   newline_and_comment_in_template_name_5
label:  a template name containing a newline followed by a comment
input:  "{{foobar\n<!-- comment -->\ninvalid|key=value}}"
output: [Text(text="{{foobar\n"), CommentStart(), Text(text=" comment "), CommentEnd(), Text(text="\ninvalid|key=value}}")]

---

name:   newline_and_comment_in_template_name_6
label:  a template name containing a newline followed by a comment
input:  "{{foobar\n<!--|key=value}}"
output: [Text(text="{{foobar\n<!--|key=value}}")]

---

name:   newline_and_comment_in_template_name_7
label:  a template name containing a newline followed by a comment
input:  "{{foobar\n<!|key=value}}"
output: [Text(text="{{foobar\n<!|key=value}}")]

---

name:   newline_and_comment_in_template_name_8
label:  a template name containing a newline followed by a comment
input:  "{{<!-- comment -->\nfoobar\n<!-- comment -->}}"
output: [TemplateOpen(), CommentStart(), Text(text=" comment "), CommentEnd(), Text(text="\nfoobar\n"), CommentStart(), Text(text=" comment "), CommentEnd(), TemplateClose()]

---

name:   tag_in_link_title
label:  HTML tags are invalid in link titles, even when complete
input:  "[[foo<i>bar</i>baz]]"
output: [Text(text="[[foo"), TagOpenOpen(), Text(text="i"), TagCloseOpen(padding=""), Text(text="bar"), TagOpenClose(), Text(text="i"), TagCloseClose(), Text(text="baz]]")]

---

name:   tag_in_template_name
label:  HTML tags are invalid in template names, even when complete
input:  "{{foo<i>bar</i>baz}}"
output: [Text(text="{{foo"), TagOpenOpen(), Text(text="i"), TagCloseOpen(padding=""), Text(text="bar"), TagOpenClose(), Text(text="i"), TagCloseClose(), Text(text="baz}}")]

---

name:   tag_in_link_text
label:  HTML tags are valid in link text
input:  "[[foo|<i>bar</i>baz]]"
output: [WikilinkOpen(), Text(text="foo"), WikilinkSeparator(), TagOpenOpen(), Text(text="i"), TagCloseOpen(padding=""), Text(text="bar"), TagOpenClose(), Text(text="i"), TagCloseClose(), Text(text="baz"), WikilinkClose()]

---

name:   comment_in_link_title
label:  comments are valid in link titles
input:  "[[foo<!--bar-->baz]]"
output: [WikilinkOpen(), Text(text="foo"), CommentStart(), Text(text="bar"), CommentEnd(), Text(text="baz"), WikilinkClose()]

---

name:   incomplete_comment_in_link_title
label:  incomplete comments are invalid in link titles
input:  "[[foo<!--bar--baz]]"
output: [Text(text="[[foo<!--bar--baz]]")]

---

name:   incomplete_comment_in_link_title_2
label:  incomplete comments are invalid in link titles
input:  "[[foo<!--barbaz]]"
output: [Text(text="[[foo<!--barbaz]]")]

---

name:   incomplete_comment_in_link_title_3
label:  incomplete comments are invalid in link titles
input:  "[[foo<!barbaz]]"
output: [Text(text="[[foo<!barbaz]]")]

---

name:   incomplete_comment_in_link_title_4
label:  incomplete comments are invalid in link titles
input:  "[[foo<!--]]"
output: [Text(text="[[foo<!--]]")]

---

name:   incomplete_comment_in_link_title_5
label:  incomplete comments are invalid in link titles
input:  "[[foo<!-"
output: [Text(text="[[foo<!-")]

---

name:   incomplete_comment_in_link_title_6
label:  incomplete comments are invalid in link titles
input:  "[[foo<!--bar"
output: [Text(text="[[foo<!--bar")]

---

name:   wikilink_to_external_link_fallback
label:  an external link enclosed in an extra pair of brackets (see issue #120)
input:  "[[http://example.com foo bar]]"
output: [Text(text="["), ExternalLinkOpen(brackets=True), Text(text="http://example.com"), ExternalLinkSeparator(), Text(text="foo bar"), ExternalLinkClose(), Text(text="]")]

---

name:   wikilink_to_external_link_fallback_2
label:  an external link enclosed in an extra pair of brackets (see issue #120)
input:  "[[http://example.com]]"
output: [Text(text="["), ExternalLinkOpen(brackets=True), Text(text="http://example.com"), ExternalLinkClose(), Text(text="]")]

---

name:   tables_in_templates
label:  catch error handling mistakes when wikitables are inside templates
input:  "{{hello|test\n{|\n|} }}"
output: [TemplateOpen(), Text(text="hello"), TemplateParamSeparator(), Text(text="test\n"), TagOpenOpen(wiki_markup="{|"), Text(text="table"), TagCloseOpen(padding="\n"), TagOpenClose(wiki_markup="|}"), Text(text="table"), TagCloseClose(), Text(text=" "), TemplateClose()]

---

name:   tables_in_templates_2
label:  catch error handling mistakes when wikitables are inside templates
input:  "{{hello|test\n{|\n| }}"
output: [TemplateOpen(), Text(text="hello"), TemplateParamSeparator(), Text(text="test\n{"), TemplateParamSeparator(), Text(text="\n"), TemplateParamSeparator(), Text(text=" "), TemplateClose()]

---

name:   many_invalid_nested_tags
label:  many unending nested tags that should be treated as plain text, followed by valid wikitext (see issues #42, #183)
input:  "<b><b><b><b><b><b><b><b><b><b><b><b><b><b><b><b><b><b>[[{{x}}"
output: [Text(text="<b><b><b><b><b><b><b><b><b><b><b><b><b><b><b><b><b><b>[["), TemplateOpen(), Text(text="x"), TemplateClose()]

---

name:   nested_templates_and_style_tags
label:  many nested templates and style tags, testing edge case behavior and error recovery near the recursion depth limit (see issue #224)
input:  "{{a|'''}}{{b|1='''c''}}{{d|1='''e''}}{{f|1='''g''}}{{h|1='''i''}}{{j|1='''k''}}{{l|1='''m''}}{{n|1='''o''}}{{p|1='''q''}}{{r|1=''s'''}}{{t|1='''u''}}{{v|1='''w''x'''y'''}}{{A|'''}}{{B|1='''C''}}{{D|1='''E''}}{{F|1='''G''}}{{H|1='''I''}}{{J|1='''K''}}{{L|1='''M''}}{{N|1='''O''}}{{P|1='''Q''}}{{R|1=''S'''}}{{T|1='''U''}}{{V|1='''W''X'''Y'''}}{{aa|'''}}{{bb|1='''cc''}}{{dd|1='''ee''}}\n{|\n|-\n|'''\n|}"
output: [TemplateOpen(), Text(text='a'), TemplateParamSeparator(), Text(text="'''"), TemplateClose(), TemplateOpen(), Text(text='b'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='c'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='d'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='e'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='f'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='g'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='h'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='i'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='j'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='k'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='l'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='m'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='n'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='o'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='p'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='q'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='r'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="''s'''"), TemplateClose(), TemplateOpen(), Text(text='t'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='u'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='v'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), TagOpenOpen(wiki_markup="'''"), Text(text='b'), TagCloseOpen(), Text(text="w''x"), TagOpenClose(), Text(text='b'), TagCloseClose(), Text(text="y'''"), TemplateClose(), TemplateOpen(), Text(text='A'), TemplateParamSeparator(), Text(text="'''"), TemplateClose(), TemplateOpen(), Text(text='B'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='C'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='D'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='E'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='F'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='G'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='H'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='I'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='J'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='K'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='L'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='M'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='N'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='O'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='P'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='Q'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='R'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="''S'''"), TemplateClose(), TemplateOpen(), Text(text='T'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='U'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='V'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='W'), TagOpenClose(), Text(text='i'), TagCloseClose(), Text(text='X'), TagOpenOpen(wiki_markup="'''"), Text(text='b'), TagCloseOpen(), Text(text='Y'), TagOpenClose(), Text(text='b'), TagCloseClose(), TemplateClose(), TemplateOpen(), Text(text='aa'), TemplateParamSeparator(), TagOpenOpen(wiki_markup="'''"), Text(text='b'), TagCloseOpen(), Text(text='}}{{bb|1='), TagOpenClose(), Text(text='b'), TagCloseClose(), Text(text="cc''"), TemplateClose(), TemplateOpen(), Text(text='dd'), TemplateParamSeparator(), Text(text='1'), TemplateParamEquals(), Text(text="'"), TagOpenOpen(wiki_markup="''"), Text(text='i'), TagCloseOpen(), Text(text='ee'), TagOpenClose(), Text(text='i'), TagCloseClose(), TemplateClose(), Text(text='\n'), TagOpenOpen(wiki_markup='{|'), Text(text='table'), TagCloseOpen(padding='\n'), TagOpenOpen(wiki_markup='|-'), Text(text='tr'), TagCloseOpen(padding='\n'), TagOpenOpen(wiki_markup='|'), Text(text='td'), TagCloseOpen(padding=''), Text(text="'''\n"), TagOpenClose(wiki_markup=''), Text(text='td'), TagCloseClose(), TagOpenClose(wiki_markup=''), Text(text='tr'), TagCloseClose(), TagOpenClose(wiki_markup='|}'), Text(text='table'), TagCloseClose()]

---

name:   wikilink_nested_with_nowiki
label:  wikilinks nested within the text of another, but surrounded by nowiki tags
input:  [[foo|bar<nowiki>[[baz]][[qux]]</nowiki>]]
output: [WikilinkOpen(), Text(text="foo"), WikilinkSeparator(), Text(text="bar"), TagOpenOpen(), Text(text="nowiki"), TagCloseOpen(padding=""), Text(text="[[baz]][[qux]]"), TagOpenClose(), Text(text="nowiki"), TagCloseClose(), WikilinkClose()]