diff options
author | diskdance <106794417+diskdance@users.noreply.github.com> | 2023-04-05 22:07:40 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-05 16:07:40 +0200 |
commit | eaca69091119e0ac5c97e626ba9e3b21b688c5ed (patch) | |
tree | ff94454e9d8729d54cee122c943bcf5364af8414 /tests/snippets | |
parent | 0e9c87bcf096908956e031f15a4e589e83be1691 (diff) | |
download | pygments-git-eaca69091119e0ac5c97e626ba9e3b21b688c5ed.tar.gz |
Add lexer for MediaWiki Wikitext (#2373)
Diffstat (limited to 'tests/snippets')
-rw-r--r-- | tests/snippets/wikitext/bold-italic.txt | 289 | ||||
-rw-r--r-- | tests/snippets/wikitext/entity.txt | 185 | ||||
-rw-r--r-- | tests/snippets/wikitext/extlink.txt | 292 | ||||
-rw-r--r-- | tests/snippets/wikitext/heading.txt | 53 | ||||
-rw-r--r-- | tests/snippets/wikitext/hr.txt | 42 | ||||
-rw-r--r-- | tests/snippets/wikitext/html.txt | 449 | ||||
-rw-r--r-- | tests/snippets/wikitext/language-converter.txt | 273 | ||||
-rw-r--r-- | tests/snippets/wikitext/list.txt | 532 | ||||
-rw-r--r-- | tests/snippets/wikitext/magic-link.txt | 52 | ||||
-rw-r--r-- | tests/snippets/wikitext/magic-word.txt | 157 | ||||
-rw-r--r-- | tests/snippets/wikitext/medialink.txt | 171 | ||||
-rw-r--r-- | tests/snippets/wikitext/only-highlight-first-redirect.txt | 22 | ||||
-rw-r--r-- | tests/snippets/wikitext/parser-function.txt | 2717 | ||||
-rw-r--r-- | tests/snippets/wikitext/parser-tag.txt | 2133 | ||||
-rw-r--r-- | tests/snippets/wikitext/signurature.txt | 24 | ||||
-rw-r--r-- | tests/snippets/wikitext/table.txt | 2323 | ||||
-rw-r--r-- | tests/snippets/wikitext/template.txt | 617 | ||||
-rw-r--r-- | tests/snippets/wikitext/wikilink.txt | 772 |
18 files changed, 11103 insertions, 0 deletions
diff --git a/tests/snippets/wikitext/bold-italic.txt b/tests/snippets/wikitext/bold-italic.txt new file mode 100644 index 00000000..816be8fb --- /dev/null +++ b/tests/snippets/wikitext/bold-italic.txt @@ -0,0 +1,289 @@ +---input--- +To ''italicize text'', put two consecutive apostrophes on each side of it. + +Three apostrophes each side will '''bold the text'''. + +Five consecutive apostrophes on each side (two for italics plus three for bold) produces '''''bold italics'''''. + +'''''Italic and bold formatting''''' works correctly only within a single line. + +''''''foo'''''' + +L''''''Étranger''''' + +'' a ''' a ''' a '' + +'' a ''' a '' a ''' + +''''' a '' a ''' +''''' a ''' a '' + +''''' a +a + +''a[[b|c]]d +a[[b|''c]]d +''a{{b|c}}d +a{{b|''c}}d + +---tokens--- +'To' Text +' ' Text +"''" Generic.Emph +'italicize' Generic.Emph +' ' Generic.Emph +'text' Generic.Emph +"''" Generic.Emph +',' Text +' ' Text +'put' Text +' ' Text +'two' Text +' ' Text +'consecutive' Text +' ' Text +'apostrophes' Text +' ' Text +'on' Text +' ' Text +'each' Text +' ' Text +'side' Text +' ' Text +'of' Text +' ' Text +'it' Text +'.' Text +'\n' Text + +'\n' Text + +'Three' Text +' ' Text +'apostrophes' Text +' ' Text +'each' Text +' ' Text +'side' Text +' ' Text +'will' Text +' ' Text +"'''" Generic.Strong +'bold' Generic.Strong +' ' Generic.Strong +'the' Generic.Strong +' ' Generic.Strong +'text' Generic.Strong +"'''" Generic.Strong +'.' Text +'\n' Text + +'\n' Text + +'Five' Text +' ' Text +'consecutive' Text +' ' Text +'apostrophes' Text +' ' Text +'on' Text +' ' Text +'each' Text +' ' Text +'side' Text +' ' Text +'(' Text +'two' Text +' ' Text +'for' Text +' ' Text +'italics' Text +' ' Text +'plus' Text +' ' Text +'three' Text +' ' Text +'for' Text +' ' Text +'bold' Text +')' Text +' ' Text +'produces' Text +' ' Text +"''" Generic.Emph +"'''" Generic.Strong +'bold' Generic.Strong +' ' Generic.Strong +'italics' Generic.Strong +"'''" Generic.Strong +"''" Generic.Emph +'.' Text +'\n' Text + +'\n' Text + +"''" Generic.Emph +"'''" Generic.Strong +'Italic' Generic.Strong +' ' Generic.Strong +'and' Generic.Strong +' ' Generic.Strong +'bold' Generic.Strong +' ' Generic.Strong +'formatting' Generic.Strong +"'''" Generic.Strong +"''" Generic.Emph +' ' Text +'works' Text +' ' Text +'correctly' Text +' ' Text +'only' Text +' ' Text +'within' Text +' ' Text +'a' Text +' ' Text +'single' Text +' ' Text +'line' Text +'.' Text +'\n' Text + +'\n' Text + +"'" Text +"''" Generic.Emph +"'''" Generic.Strong +'foo' Generic.Strong +"'" Generic.Strong +"'''" Generic.Strong +"''" Generic.Emph +'\n' Text + +'\n' Text + +'L' Text +"'" Text +"''" Generic.Emph +"'''" Generic.Strong +'Étranger' Generic.Strong +"'''" Generic.Strong +"''" Generic.Emph +'\n' Text + +'\n' Text + +"''" Generic.Emph +' ' Generic.Emph +'a' Generic.Emph +' ' Generic.Emph +"'''" Generic.Strong +' ' Generic.Strong +'a' Generic.Strong +' ' Generic.Strong +"'''" Generic.Strong +' ' Generic.Emph +'a' Generic.Emph +' ' Generic.Emph +"''" Generic.Emph +'\n' Text + +'\n' Text + +"''" Generic.Emph +' ' Generic.Emph +'a' Generic.Emph +' ' Generic.Emph +"'''" Generic.Strong +' ' Generic.Strong +'a' Generic.Strong +' ' Generic.Strong +"''" Generic.Emph +' ' Generic.Strong +'a' Generic.Strong +' ' Generic.Strong +"'''" Generic.Strong +'\n' Text + +'\n' Text + +"''" Generic.Emph +"'''" Generic.Strong +' ' Generic.Strong +'a' Generic.Strong +' ' Generic.Strong +"''" Generic.Emph +' ' Generic.Strong +'a' Generic.Strong +' ' Generic.Strong +"'''" Generic.Strong +'\n' Text + +"''" Generic.Emph +"'''" Generic.Strong +' ' Generic.Strong +'a' Generic.Strong +' ' Generic.Strong +"'''" Generic.Strong +' ' Generic.Emph +'a' Generic.Emph +' ' Generic.Emph +"''" Generic.Emph +'\n' Text + +'\n' Text + +"''" Generic.Emph +"'''" Generic.Strong +' ' Generic.Strong +'a' Generic.Strong +'\n' Text + +'a' Text +'\n' Text + +'\n' Text + +"''" Generic.Emph +'a' Generic.Emph +'[[' Punctuation +'b' Name.Tag +'|' Punctuation +'c' Text +']]' Punctuation +'d' Generic.Emph +'\n' Text + +'a' Text +'[[' Punctuation +'b' Name.Tag +'|' Punctuation +"''" Generic.Emph +'c' Generic.Emph +'' Punctuation +']]' Punctuation +'d' Text +'\n' Text + +"''" Generic.Emph +'a' Generic.Emph +'' Punctuation +'{{' Punctuation +'b' Name.Tag +'|' Punctuation +'c' Text +'}}' Punctuation +'d' Text +'\n' Text + +'a' Text +'{{' Punctuation +'b' Name.Tag +'|' Punctuation +"''" Generic.Emph +'c' Generic.Emph +'' Punctuation +'}}' Punctuation +'d' Text +'\n' Text diff --git a/tests/snippets/wikitext/entity.txt b/tests/snippets/wikitext/entity.txt new file mode 100644 index 00000000..0838de34 --- /dev/null +++ b/tests/snippets/wikitext/entity.txt @@ -0,0 +1,185 @@ +---input--- +Mr. Smith or 400 km/h + +À Á Â Ã Ä Å Æ + +Ç È É Ê Ë + +Ì Í Î Ï Ñ + +Ò Ó Ô Õ Ö Ø Œ + +Ù Ú Û Ü Ÿ ß + +à á â ã ä å æ ç + +è é ê ë + +ì í î ï ñ + +ò ó ô õ ö ø œ + +ù ú û ü ÿ + +---tokens--- +'Mr' Text +'.' Text +' ' Name.Entity +'Smith' Text +' ' Text +'or' Text +' ' Text +'400' Text +' ' Name.Entity +'km' Text +'/' Text +'h' Text +'\n' Text + +'\n' Text + +'À' Name.Entity +' ' Text +'Á' Name.Entity +' ' Text +'Â' Name.Entity +' ' Text +'Ã' Name.Entity +' ' Text +'Ä' Name.Entity +' ' Text +'Å' Name.Entity +' ' Text +'Æ' Name.Entity +'\n' Text + +'\n' Text + +'Ç' Name.Entity +' ' Text +'È' Name.Entity +' ' Text +'É' Name.Entity +' ' Text +'Ê' Name.Entity +' ' Text +'Ë' Name.Entity +'\n' Text + +'\n' Text + +'Ì' Name.Entity +' ' Text +'Í' Name.Entity +' ' Text +'Î' Name.Entity +' ' Text +'Ï' Name.Entity +' ' Text +'Ñ' Name.Entity +'\n' Text + +'\n' Text + +'Ò' Name.Entity +' ' Text +'Ó' Name.Entity +' ' Text +'Ô' Name.Entity +' ' Text +'Õ' Name.Entity +' ' Text +'Ö' Name.Entity +' ' Text +'Ø' Name.Entity +' ' Text +'Œ' Name.Entity +'\n' Text + +'\n' Text + +'Ù' Name.Entity +' ' Text +'Ú' Name.Entity +' ' Text +'Û' Name.Entity +' ' Text +'Ü' Name.Entity +' ' Text +'Ÿ' Name.Entity +' ' Text +'ß' Name.Entity +'\n' Text + +'\n' Text + +'à' Name.Entity +' ' Text +'á' Name.Entity +' ' Text +'â' Name.Entity +' ' Text +'ã' Name.Entity +' ' Text +'ä' Name.Entity +' ' Text +'å' Name.Entity +' ' Text +'æ' Name.Entity +' ' Text +'ç' Name.Entity +'\n' Text + +'\n' Text + +'è' Name.Entity +' ' Text +'é' Name.Entity +' ' Text +'ê' Name.Entity +' ' Text +'ë' Name.Entity +'\n' Text + +'\n' Text + +'ì' Name.Entity +' ' Text +'í' Name.Entity +' ' Text +'î' Name.Entity +' ' Text +'ï' Name.Entity +' ' Text +'ñ' Name.Entity +'\n' Text + +'\n' Text + +'ò' Name.Entity +' ' Text +'ó' Name.Entity +' ' Text +'ô' Name.Entity +' ' Text +'õ' Name.Entity +' ' Text +'ö' Name.Entity +' ' Text +'ø' Name.Entity +' ' Text +'œ' Name.Entity +'\n' Text + +'\n' Text + +'ù' Name.Entity +' ' Text +'ú' Name.Entity +' ' Text +'û' Name.Entity +' ' Text +'ü' Name.Entity +' ' Text +'ÿ' Name.Entity +'\n' Text diff --git a/tests/snippets/wikitext/extlink.txt b/tests/snippets/wikitext/extlink.txt new file mode 100644 index 00000000..a1e445b4 --- /dev/null +++ b/tests/snippets/wikitext/extlink.txt @@ -0,0 +1,292 @@ +---input--- +[https://www.wikipedia.org Wikipedia] + +[https://www.wikipedia.org] + +https://www.wikipedia.org + +<span class="plainlinks">[https://www.wikipedia.org Wikipedia]</span> + +Single square brackets holding +[text without a HTTP URL] are +preserved, but single square +brackets containing a URL are +treated as being an external +[https://example.com/ Web link]. + +[https://www.wikipedia.org ''Wiki'''''pedi'''a] + +tel:1145141919810 + +[tel:1145141919810 telephone me] + +[https://www.google.com [[a]]] + +https://www.example.com + +[https://www.exampke.com] + +[//example.com] + +[//example.com a b c] + +[//example.com a ''b'' c <nowiki>[//example.com a ''b'' c]</nowiki><includeonly/><div class="a"/> d] + +[{{fullurl:Help:Wiki markup|action=edit}} edit] + +---tokens--- +'[' Punctuation +'https://www.wikipedia.org' Name.Label +' ' Text.Whitespace +'Wikipedia' Text +']' Punctuation +'\n' Text + +'\n' Text + +'[' Punctuation +'https://www.wikipedia.org' Name.Label +']' Punctuation +'\n' Text + +'\n' Text + +'https://www.wikipedia.org' Name.Label +'\n' Text + +'\n' Text + +'<' Punctuation +'span' Name.Tag +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'"' Literal.String.Double +'plainlinks' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'[' Punctuation +'https://www.wikipedia.org' Name.Label +' ' Text.Whitespace +'Wikipedia' Text +']' Punctuation +'</' Punctuation +'span' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'Single' Text +' ' Text +'square' Text +' ' Text +'brackets' Text +' ' Text +'holding' Text +'\n' Text + +'[' Text +'text' Text +' ' Text +'without' Text +' ' Text +'a' Text +' ' Text +'HTTP' Text +' ' Text +'URL' Text +']' Text +' ' Text +'are' Text +'\n' Text + +'preserved' Text +',' Text +' ' Text +'but' Text +' ' Text +'single' Text +' ' Text +'square' Text +'\n' Text + +'brackets' Text +' ' Text +'containing' Text +' ' Text +'a' Text +' ' Text +'URL' Text +' ' Text +'are' Text +'\n' Text + +'treated' Text +' ' Text +'as' Text +' ' Text +'being' Text +' ' Text +'an' Text +' ' Text +'external' Text +'\n' Text + +'[' Punctuation +'https://example.com/' Name.Label +' ' Text.Whitespace +'Web' Text +' ' Text +'link' Text +']' Punctuation +'.' Text +'\n' Text + +'\n' Text + +'[' Punctuation +'https://www.wikipedia.org' Name.Label +' ' Text.Whitespace +"''" Generic.Emph +'Wiki' Generic.Emph +"''" Generic.Emph +"'''" Generic.Strong +'pedi' Generic.Strong +"'''" Generic.Strong +'a' Text +']' Punctuation +'\n' Text + +'\n' Text + +'tel:1145141919810' Name.Label +'\n' Text + +'\n' Text + +'[' Punctuation +'tel:1145141919810' Name.Label +' ' Text.Whitespace +'telephone' Text +' ' Text +'me' Text +']' Punctuation +'\n' Text + +'\n' Text + +'[' Punctuation +'https://www.google.com' Name.Label +' ' Text.Whitespace +'[[' Punctuation +'a' Name.Tag +']]' Punctuation +']' Punctuation +'\n' Text + +'\n' Text + +'https://www.example.com' Name.Label +'\n' Text + +'\n' Text + +'[' Punctuation +'https://www.exampke.com' Name.Label +']' Punctuation +'\n' Text + +'\n' Text + +'[' Punctuation +'//example.com' Name.Label +']' Punctuation +'\n' Text + +'\n' Text + +'[' Punctuation +'//example.com' Name.Label +' ' Text.Whitespace +'a' Text +' ' Text +'b' Text +' ' Text +'c' Text +']' Punctuation +'\n' Text + +'\n' Text + +'[' Punctuation +'//example.com' Name.Label +' ' Text.Whitespace +'a' Text +' ' Text +"''" Generic.Emph +'b' Generic.Emph +"''" Generic.Emph +' ' Text +'c' Text +' ' Text +'<' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'[' Text +'/' Text +'/' Text +'example' Text +'.' Text +'com' Text +' ' Text +'a' Text +' ' Text +"'" Text +"'" Text +'b' Text +"'" Text +"'" Text +' ' Text +'c' Text +']' Text +'</' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'<' Punctuation +'includeonly' Name.Tag +'/>' Punctuation +'<' Punctuation +'div' Name.Tag +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'"' Literal.String.Double +'a' Literal.String.Double +'"' Literal.String.Double +'/>' Punctuation +' ' Text +'d' Text +']' Punctuation +'\n' Text + +'\n' Text + +'[' Text +'{{' Punctuation +'fullurl' Name.Function +':' Punctuation +'Help' Text +':' Text +'Wiki' Text +' ' Text +'markup' Text +'|' Punctuation +'action' Name.Label +'=' Operator +'edit' Text +'}}' Punctuation +' ' Text +'edit' Text +']' Text +'\n' Text diff --git a/tests/snippets/wikitext/heading.txt b/tests/snippets/wikitext/heading.txt new file mode 100644 index 00000000..ce241187 --- /dev/null +++ b/tests/snippets/wikitext/heading.txt @@ -0,0 +1,53 @@ +---input--- += Heading 1 = +== Heading 2 == +=== Heading 3 === +==== Heading 4 ==== +===== Heading 5 ===== +====== Heading 6 ====== + +== [[Heading|''Heading'']] == + +== +=== + +---tokens--- +'= Heading 1 =' Generic.Heading +'\n' Text.Whitespace + +'==' Generic.Subheading +' Heading 2 ' Generic.Subheading +'==' Generic.Subheading +'\n' Text.Whitespace + +'===' Generic.Subheading +' Heading 3 ' Generic.Subheading +'===' Generic.Subheading +'\n' Text.Whitespace + +'====' Generic.Subheading +' Heading 4 ' Generic.Subheading +'====' Generic.Subheading +'\n' Text.Whitespace + +'=====' Generic.Subheading +' Heading 5 ' Generic.Subheading +'=====' Generic.Subheading +'\n' Text.Whitespace + +'======' Generic.Subheading +' Heading 6 ' Generic.Subheading +'======' Generic.Subheading +'\n\n' Text.Whitespace + +'==' Generic.Subheading +" [[Heading|''Heading'']] " Generic.Subheading +'==' Generic.Subheading +'\n\n' Text.Whitespace + +'=' Text +'=' Text +'\n' Text + +'===' Generic.Heading +'\n' Text.Whitespace diff --git a/tests/snippets/wikitext/hr.txt b/tests/snippets/wikitext/hr.txt new file mode 100644 index 00000000..46499b09 --- /dev/null +++ b/tests/snippets/wikitext/hr.txt @@ -0,0 +1,42 @@ +---input--- +- +-- +--- +---- +----- +------ +------- +-------- +--------foo + +---tokens--- +'-' Text +'\n' Text + +'-' Text +'-' Text +'\n' Text + +'-' Text +'-' Text +'-' Text +'\n' Text + +'----' Keyword +'\n' Text + +'-----' Keyword +'\n' Text + +'------' Keyword +'\n' Text + +'-------' Keyword +'\n' Text + +'--------' Keyword +'\n' Text + +'--------' Keyword +'foo' Text +'\n' Text diff --git a/tests/snippets/wikitext/html.txt b/tests/snippets/wikitext/html.txt new file mode 100644 index 00000000..7fc96eec --- /dev/null +++ b/tests/snippets/wikitext/html.txt @@ -0,0 +1,449 @@ +---input--- +<div class="center" style="width: auto; margin-left: auto; margin-right: auto;">Centered text</div> + +<blockquote> +The '''blockquote''' tag will indent both margins when needed instead of the left margin only as the colon does. +</blockquote> + +<div> +#123 +:456 +---- +</div> + +Use <small >small text</small> only when necessary. + +To match, for example, the font-size used in an image caption, the "small" tag can also be used to +<small style="font-size:87%;">reduce a text's font-size to 87%</small>. + +Better not use <big>big text</big>, unless <small>it's <big>within</big> small</small> text. + +x<sub>1</sub> x<sub>2</sub> x<sub>3</sub> + +function <code>int m2()</code> is nice. + +You can <del>indicate deleted material</del> and <ins>inserted material</ins>. + +<div ></div > + +<span <!-- this is a comment --> ></span> + +<span class="citation {{{Citation class|{{{Citation type|}}}}}}"></span> + +<a></a> + +---tokens--- +'<' Punctuation +'div' Name.Tag +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'"' Literal.String.Double +'center' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'width' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'auto' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'margin' Literal.String.Double +'-' Literal.String.Double +'left' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'auto' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'margin' Literal.String.Double +'-' Literal.String.Double +'right' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'auto' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'Centered' Text +' ' Text +'text' Text +'</' Punctuation +'div' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'blockquote' Name.Tag +'>' Punctuation +'\n' Text + +'The' Text +' ' Text +"'''" Generic.Strong +'blockquote' Generic.Strong +"'''" Generic.Strong +' ' Text +'tag' Text +' ' Text +'will' Text +' ' Text +'indent' Text +' ' Text +'both' Text +' ' Text +'margins' Text +' ' Text +'when' Text +' ' Text +'needed' Text +' ' Text +'instead' Text +' ' Text +'of' Text +' ' Text +'the' Text +' ' Text +'left' Text +' ' Text +'margin' Text +' ' Text +'only' Text +' ' Text +'as' Text +' ' Text +'the' Text +' ' Text +'colon' Text +' ' Text +'does' Text +'.' Text +'\n' Text + +'</' Punctuation +'blockquote' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'div' Name.Tag +'>' Punctuation +'\n' Text + +'#' Keyword +'123' Text +'\n' Text + +':' Keyword +'456' Text +'\n' Text + +'----' Keyword +'\n' Text + +'</' Punctuation +'div' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'Use' Text +' ' Text +'<' Punctuation +'small' Name.Tag +' >' Punctuation +'small' Text +' ' Text +'text' Text +'</' Punctuation +'small' Name.Tag +'>' Punctuation +' ' Text +'only' Text +' ' Text +'when' Text +' ' Text +'necessary' Text +'.' Text +'\n' Text + +'\n' Text + +'To' Text +' ' Text +'match' Text +',' Text +' ' Text +'for' Text +' ' Text +'example' Text +',' Text +' ' Text +'the' Text +' ' Text +'font' Text +'-' Text +'size' Text +' ' Text +'used' Text +' ' Text +'in' Text +' ' Text +'an' Text +' ' Text +'image' Text +' ' Text +'caption' Text +',' Text +' ' Text +'the' Text +' ' Text +'"' Text +'small' Text +'"' Text +' ' Text +'tag' Text +' ' Text +'can' Text +' ' Text +'also' Text +' ' Text +'be' Text +' ' Text +'used' Text +' ' Text +'to' Text +'\n' Text + +'<' Punctuation +'small' Name.Tag +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'font' Literal.String.Double +'-' Literal.String.Double +'size' Literal.String.Double +':' Literal.String.Double +'87' Literal.String.Double +'%' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'reduce' Text +' ' Text +'a' Text +' ' Text +'text' Text +"'" Text +'s' Text +' ' Text +'font' Text +'-' Text +'size' Text +' ' Text +'to' Text +' ' Text +'87' Text +'%' Text +'</' Punctuation +'small' Name.Tag +'>' Punctuation +'.' Text +'\n' Text + +'\n' Text + +'Better' Text +' ' Text +'not' Text +' ' Text +'use' Text +' ' Text +'<' Punctuation +'big' Name.Tag +'>' Punctuation +'big' Text +' ' Text +'text' Text +'</' Punctuation +'big' Name.Tag +'>' Punctuation +',' Text +' ' Text +'unless' Text +' ' Text +'<' Punctuation +'small' Name.Tag +'>' Punctuation +'it' Text +"'" Text +'s' Text +' ' Text +'<' Punctuation +'big' Name.Tag +'>' Punctuation +'within' Text +'</' Punctuation +'big' Name.Tag +'>' Punctuation +' ' Text +'small' Text +'</' Punctuation +'small' Name.Tag +'>' Punctuation +' ' Text +'text' Text +'.' Text +'\n' Text + +'\n' Text + +'x' Text +'<' Punctuation +'sub' Name.Tag +'>' Punctuation +'1' Text +'</' Punctuation +'sub' Name.Tag +'>' Punctuation +' ' Text +'x' Text +'<' Punctuation +'sub' Name.Tag +'>' Punctuation +'2' Text +'</' Punctuation +'sub' Name.Tag +'>' Punctuation +' ' Text +'x' Text +'<' Punctuation +'sub' Name.Tag +'>' Punctuation +'3' Text +'</' Punctuation +'sub' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'function' Text +' ' Text +'<' Punctuation +'code' Name.Tag +'>' Punctuation +'int' Text +' ' Text +'m2' Text +'(' Text +')' Text +'</' Punctuation +'code' Name.Tag +'>' Punctuation +' ' Text +'is' Text +' ' Text +'nice' Text +'.' Text +'\n' Text + +'\n' Text + +'You' Text +' ' Text +'can' Text +' ' Text +'<' Punctuation +'del' Name.Tag +'>' Punctuation +'indicate' Text +' ' Text +'deleted' Text +' ' Text +'material' Text +'</' Punctuation +'del' Name.Tag +'>' Punctuation +' ' Text +'and' Text +' ' Text +'<' Punctuation +'ins' Name.Tag +'>' Punctuation +'inserted' Text +' ' Text +'material' Text +'</' Punctuation +'ins' Name.Tag +'>' Punctuation +'.' Text +'\n' Text + +'\n' Text + +'<' Punctuation +'div' Name.Tag +' >' Punctuation +'</' Punctuation +'div' Name.Tag +' ' Text.Whitespace +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'span' Name.Tag +' ' Text.Whitespace +'<!-- this is a comment -->' Comment.Multiline +' >' Punctuation +'</' Punctuation +'span' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'span' Name.Tag +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'"' Literal.String.Double +'citation' Literal.String.Double +' ' Literal.String.Double +'{{{' Punctuation +'Citation class' Name.Variable +'|' Punctuation +'{{{' Punctuation +'Citation type' Name.Variable +'|' Punctuation +'}}}' Punctuation +'}}}' Punctuation +'"' Literal.String.Double +'>' Punctuation +'</' Punctuation +'span' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Text +'a' Text +'>' Text +'<' Text +'/' Text +'a' Text +'>' Text +'\n' Text diff --git a/tests/snippets/wikitext/language-converter.txt b/tests/snippets/wikitext/language-converter.txt new file mode 100644 index 00000000..c8fef97f --- /dev/null +++ b/tests/snippets/wikitext/language-converter.txt @@ -0,0 +1,273 @@ +---input--- +-{H|zh-cn:[[博客]]; zh-hk:網誌; zh-tw:部落格}- +-{H|zh-cn:博客; zh-hk:網誌; zh-tw:部落格;}- +-{H|zh-cn:[[博客]]; zh-hk:網誌; zh-tw:部落格; }- + +-{zh-cn:[[博客]]; zh-hk:網誌; zh-tw:部落格}- +-{zh-cn:博客; zh-hk:網誌; zh-tw:部落格;}- +-{zh-cn:[[博客]]; zh-hk:網誌; zh-tw:部落格; }- + +-{zh-tw=>zh-cn:[[博客]];zh-hk=>zh-cn:[[博客]]; }- + +-{部落格}- -{[[部落格]]}- + +-{zh-cn:-{[[博客]]}-; zh-invalid:網誌; zh-tw:部落格}- + +-{zh-invalid:''a''[[博客]];;;zh-cn:a}- +-{zh:''a''[[博客]]}- + +-{zh-hans:<span style="font-size:120%;">xxx</span>;zh-hant:\ +<span style="font-size:120%;">yyy</span>;}- + +---tokens--- +'-{' Punctuation +'H' Keyword +'|' Punctuation +'zh-cn' Name.Label +':' Punctuation +'[[' Punctuation +'博客' Name.Tag +']]' Punctuation +';' Punctuation +' zh-hk' Name.Label +':' Punctuation +'網誌' Text +';' Punctuation +' zh-tw' Name.Label +':' Punctuation +'部落格' Text +'}-' Punctuation +'\n' Text + +'-{' Punctuation +'H' Keyword +'|' Punctuation +'zh-cn' Name.Label +':' Punctuation +'博客' Text +';' Punctuation +' zh-hk' Name.Label +':' Punctuation +'網誌' Text +';' Punctuation +' zh-tw' Name.Label +':' Punctuation +'部落格' Text +';}-' Punctuation +'\n' Text + +'-{' Punctuation +'H' Keyword +'|' Punctuation +'zh-cn' Name.Label +':' Punctuation +'[[' Punctuation +'博客' Name.Tag +']]' Punctuation +';' Punctuation +' zh-hk' Name.Label +':' Punctuation +'網誌' Text +';' Punctuation +' zh-tw' Name.Label +':' Punctuation +'部落格' Text +'; }-' Punctuation +'\n' Text + +'\n' Text + +'-{' Punctuation +'zh-cn' Name.Label +':' Punctuation +'[[' Punctuation +'博客' Name.Tag +']]' Punctuation +';' Punctuation +' zh-hk' Name.Label +':' Punctuation +'網誌' Text +';' Punctuation +' zh-tw' Name.Label +':' Punctuation +'部落格' Text +'}-' Punctuation +'\n' Text + +'-{' Punctuation +'zh-cn' Name.Label +':' Punctuation +'博客' Text +';' Punctuation +' zh-hk' Name.Label +':' Punctuation +'網誌' Text +';' Punctuation +' zh-tw' Name.Label +':' Punctuation +'部落格' Text +';}-' Punctuation +'\n' Text + +'-{' Punctuation +'zh-cn' Name.Label +':' Punctuation +'[[' Punctuation +'博客' Name.Tag +']]' Punctuation +';' Punctuation +' zh-hk' Name.Label +':' Punctuation +'網誌' Text +';' Punctuation +' zh-tw' Name.Label +':' Punctuation +'部落格' Text +'; }-' Punctuation +'\n' Text + +'\n' Text + +'-{' Punctuation +'zh-tw' Name.Label +'=>' Operator +'zh-cn' Name.Label +':' Punctuation +'[[' Punctuation +'博客' Name.Tag +']]' Punctuation +';' Punctuation +'zh-hk' Name.Label +'=>' Operator +'zh-cn' Name.Label +':' Punctuation +'[[' Punctuation +'博客' Name.Tag +']]' Punctuation +'; }-' Punctuation +'\n' Text + +'\n' Text + +'-{' Punctuation +'部落格' Text +'}-' Punctuation +' ' Text +'-{' Punctuation +'[[' Punctuation +'部落格' Name.Tag +']]' Punctuation +'}-' Punctuation +'\n' Text + +'\n' Text + +'-{' Punctuation +'zh-cn' Name.Label +':' Punctuation +'-{' Punctuation +'[[' Punctuation +'博客' Name.Tag +']]' Punctuation +'}-' Punctuation +';' Text +' ' Text +'zh' Text +'-' Text +'invalid' Text +':' Text +'網誌' Text +';' Punctuation +' zh-tw' Name.Label +':' Punctuation +'部落格' Text +'}-' Punctuation +'\n' Text + +'\n' Text + +'-{' Punctuation +'zh' Text +'-' Text +'invalid' Text +':' Text +"''" Generic.Emph +'a' Generic.Emph +"''" Generic.Emph +'[[' Punctuation +'博客' Name.Tag +']]' Punctuation +';' Text +';' Text +';' Text +'zh' Text +'-' Text +'cn' Text +':' Text +'a' Text +'}-' Punctuation +'\n' Text + +'-{' Punctuation +'zh' Name.Label +':' Punctuation +"''" Generic.Emph +'a' Generic.Emph +"''" Generic.Emph +'[[' Punctuation +'博客' Name.Tag +']]' Punctuation +'}-' Punctuation +'\n' Text + +'\n' Text + +'-{' Punctuation +'zh-hans' Name.Label +':' Punctuation +'<' Punctuation +'span' Name.Tag +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'font' Literal.String.Double +'-' Literal.String.Double +'size' Literal.String.Double +':' Literal.String.Double +'120' Literal.String.Double +'%' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'xxx' Text +'</' Punctuation +'span' Name.Tag +'>' Punctuation +';' Punctuation +'zh-hant' Name.Label +':' Punctuation +'\\' Text +'\n' Text + +'<' Punctuation +'span' Name.Tag +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'font' Literal.String.Double +'-' Literal.String.Double +'size' Literal.String.Double +':' Literal.String.Double +'120' Literal.String.Double +'%' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'yyy' Text +'</' Punctuation +'span' Name.Tag +'>' Punctuation +';}-' Punctuation +'\n' Text diff --git a/tests/snippets/wikitext/list.txt b/tests/snippets/wikitext/list.txt new file mode 100644 index 00000000..10613a18 --- /dev/null +++ b/tests/snippets/wikitext/list.txt @@ -0,0 +1,532 @@ +---input--- +; Term : Definition1 +: Definition2 + +; '''Term''' +: Definition1 +: Definition2 +: Definition3 +: Definition4 + +; [[Wikipedia:Term#123|Blah]] : Definition1 + +; [[Wikipedia:Term#123|Blah]] +: Definition1 + +# Item1 +# ''Item2'' +# Item3 +# [[Item4]] +## Sub-item 1 +### Sub-sub-item +#### Sub-sub-sub-item +## Sub-item 2 +# Item5 + +* Item1 +* '''Item2''' +* Item3 +* [[Item4]] +** Sub-item 4 a) +*** Sub-item 4 a) 1. +**** Sub-item 4 a) 1. i) +**** Sub-item 4 a) 1. ii) +** Sub-item 4 b) +* Item5 + +Indentation as used on talk pages: +:[[Each]] ''colon'' at the '''start''' of a line +::causes the line to be indented by three more character positions. +:::(The indentation persists +so long as no carriage return or line break is used.) +:::Repeat the indentation at any line break. +::::Use an extra colon for each response. +:::::And so forth ... +::::::And so on ... +{{Outdent|::::::}}The outdent template can give a visual indicator that we're deliberately cancelling the indent (6 levels here) + +:*# Mixed list +::##:*: Complex mixed list + +---tokens--- +';' Keyword +' ' Text +'Term' Text +' ' Text +':' Keyword +' ' Text +'Definition1' Text +'\n' Text + +':' Keyword +' ' Text +'Definition2' Text +'\n' Text + +'\n' Text + +';' Keyword +' ' Text +"'''" Generic.Strong +'Term' Generic.Strong +"'''" Generic.Strong +'\n' Text + +':' Keyword +' ' Text +'Definition1' Text +'\n' Text + +':' Keyword +' ' Text +'Definition2' Text +'\n' Text + +':' Keyword +' ' Text +'Definition3' Text +'\n' Text + +':' Keyword +' ' Text +'Definition4' Text +'\n' Text + +'\n' Text + +';' Keyword +' ' Text +'[[' Punctuation +'Wikipedia' Name.Namespace +':' Punctuation +'Term' Name.Tag +'#' Punctuation +'123' Name.Label +'|' Punctuation +'Blah' Text +']]' Punctuation +'\xa0' Text +':' Keyword +' ' Text +'Definition1' Text +'\n' Text + +'\n' Text + +';' Keyword +' ' Text +'[[' Punctuation +'Wikipedia' Name.Namespace +':' Punctuation +'Term' Name.Tag +'#' Punctuation +'123' Name.Label +'|' Punctuation +'Blah' Text +']]' Punctuation +'\xa0' Text +'\n' Text + +':' Keyword +' ' Text +'Definition1' Text +'\n' Text + +'\n' Text + +'#' Keyword +' ' Text +'Item1' Text +'\n' Text + +'#' Keyword +' ' Text +"''" Generic.Emph +'Item2' Generic.Emph +"''" Generic.Emph +'\n' Text + +'#' Keyword +' ' Text +'Item3' Text +'\n' Text + +'#' Keyword +' ' Text +'[[' Punctuation +'Item4' Name.Tag +']]' Punctuation +'\n' Text + +'##' Keyword +' ' Text +'Sub' Text +'-' Text +'item' Text +' ' Text +'1' Text +'\n' Text + +'###' Keyword +' ' Text +'Sub' Text +'-' Text +'sub' Text +'-' Text +'item' Text +'\n' Text + +'####' Keyword +' ' Text +'Sub' Text +'-' Text +'sub' Text +'-' Text +'sub' Text +'-' Text +'item' Text +'\n' Text + +'##' Keyword +' ' Text +'Sub' Text +'-' Text +'item' Text +' ' Text +'2' Text +'\n' Text + +'#' Keyword +' ' Text +'Item5' Text +'\n' Text + +'\n' Text + +'*' Keyword +' ' Text +'Item1' Text +'\n' Text + +'*' Keyword +' ' Text +"'''" Generic.Strong +'Item2' Generic.Strong +"'''" Generic.Strong +'\n' Text + +'*' Keyword +' ' Text +'Item3' Text +'\n' Text + +'*' Keyword +' ' Text +'[[' Punctuation +'Item4' Name.Tag +']]' Punctuation +'\n' Text + +'**' Keyword +' ' Text +'Sub' Text +'-' Text +'item' Text +' ' Text +'4' Text +' ' Text +'a' Text +')' Text +'\n' Text + +'***' Keyword +' ' Text +'Sub' Text +'-' Text +'item' Text +' ' Text +'4' Text +' ' Text +'a' Text +')' Text +' ' Text +'1' Text +'.' Text +'\n' Text + +'****' Keyword +' ' Text +'Sub' Text +'-' Text +'item' Text +' ' Text +'4' Text +' ' Text +'a' Text +')' Text +' ' Text +'1' Text +'.' Text +' ' Text +'i' Text +')' Text +'\n' Text + +'****' Keyword +' ' Text +'Sub' Text +'-' Text +'item' Text +' ' Text +'4' Text +' ' Text +'a' Text +')' Text +' ' Text +'1' Text +'.' Text +' ' Text +'ii' Text +')' Text +'\n' Text + +'**' Keyword +' ' Text +'Sub' Text +'-' Text +'item' Text +' ' Text +'4' Text +' ' Text +'b' Text +')' Text +'\n' Text + +'*' Keyword +' ' Text +'Item5' Text +'\n' Text + +'\n' Text + +'Indentation' Text +' ' Text +'as' Text +' ' Text +'used' Text +' ' Text +'on' Text +' ' Text +'talk' Text +' ' Text +'pages' Text +':' Text +'\n' Text + +':' Keyword +'[[' Punctuation +'Each' Name.Tag +']]' Punctuation +' ' Text +"''" Generic.Emph +'colon' Generic.Emph +"''" Generic.Emph +' ' Text +'at' Text +' ' Text +'the' Text +' ' Text +"'''" Generic.Strong +'start' Generic.Strong +"'''" Generic.Strong +' ' Text +'of' Text +' ' Text +'a' Text +' ' Text +'line' Text +'\n' Text + +'::' Keyword +'causes' Text +' ' Text +'the' Text +' ' Text +'line' Text +' ' Text +'to' Text +' ' Text +'be' Text +' ' Text +'indented' Text +' ' Text +'by' Text +' ' Text +'three' Text +' ' Text +'more' Text +' ' Text +'character' Text +' ' Text +'positions' Text +'.' Text +'\n' Text + +':::' Keyword +'(' Text +'The' Text +' ' Text +'indentation' Text +' ' Text +'persists' Text +'\n' Text + +'so' Text +' ' Text +'long' Text +' ' Text +'as' Text +' ' Text +'no' Text +' ' Text +'carriage' Text +' ' Text +'return' Text +' ' Text +'or' Text +' ' Text +'line' Text +' ' Text +'break' Text +' ' Text +'is' Text +' ' Text +'used' Text +'.' Text +')' Text +'\n' Text + +':::' Keyword +'Repeat' Text +' ' Text +'the' Text +' ' Text +'indentation' Text +' ' Text +'at' Text +' ' Text +'any' Text +' ' Text +'line' Text +' ' Text +'break' Text +'.' Text +'\n' Text + +'::::' Keyword +'Use' Text +' ' Text +'an' Text +' ' Text +'extra' Text +' ' Text +'colon' Text +' ' Text +'for' Text +' ' Text +'each' Text +' ' Text +'response' Text +'.' Text +'\n' Text + +':::::' Keyword +'And' Text +' ' Text +'so' Text +' ' Text +'forth' Text +' ' Text +'.' Text +'.' Text +'.' Text +'\n' Text + +'::::::' Keyword +'And' Text +' ' Text +'so' Text +' ' Text +'on' Text +' ' Text +'.' Text +'.' Text +'.' Text +'\n' Text + +'{{' Punctuation +'Outdent' Name.Tag +'|' Punctuation +':' Text +':' Text +':' Text +':' Text +':' Text +':' Text +'}}' Punctuation +'The' Text +' ' Text +'outdent' Text +' ' Text +'template' Text +' ' Text +'can' Text +' ' Text +'give' Text +' ' Text +'a' Text +' ' Text +'visual' Text +' ' Text +'indicator' Text +' ' Text +'that' Text +' ' Text +'we' Text +"'" Text +'re' Text +' ' Text +'deliberately' Text +' ' Text +'cancelling' Text +' ' Text +'the' Text +' ' Text +'indent' Text +' ' Text +'(' Text +'6' Text +' ' Text +'levels' Text +' ' Text +'here' Text +')' Text +'\n' Text + +'\n' Text + +':*#' Keyword +' ' Text +'Mixed' Text +' ' Text +'list' Text +'\n' Text + +'::##:*:' Keyword +' ' Text +'Complex' Text +' ' Text +'mixed' Text +' ' Text +'list' Text +'\n' Text diff --git a/tests/snippets/wikitext/magic-link.txt b/tests/snippets/wikitext/magic-link.txt new file mode 100644 index 00000000..836f75ea --- /dev/null +++ b/tests/snippets/wikitext/magic-link.txt @@ -0,0 +1,52 @@ +---input--- +RFC 1 +RFC 2 +RFC 3f +rfc 4 +PMID    114514 +ISBN 978-3-16-148410-0 +ISBN 978 3 16-148410 0 +https://example.com +irc://example.com +nolink://example.com + +---tokens--- +'RFC 1' Name.Function.Magic +'\n' Text + +'RFC 2' Name.Function.Magic +'\n' Text + +'RFC' Text +' ' Text +'3f' Text +'\n' Text + +'rfc' Text +' ' Text +'4' Text +'\n' Text + +'PMID    114514' Name.Function.Magic +'\n' Text + +'ISBN 978-3-16-148410-0' Name.Function.Magic +'\n' Text + +'ISBN 978 3 16-148410 0' Name.Function.Magic +'\n' Text + +'https://example.com' Name.Label +'\n' Text + +'irc://example.com' Name.Label +'\n' Text + +'nolink' Text +':' Text +'/' Text +'/' Text +'example' Text +'.' Text +'com' Text +'\n' Text diff --git a/tests/snippets/wikitext/magic-word.txt b/tests/snippets/wikitext/magic-word.txt new file mode 100644 index 00000000..e0736baf --- /dev/null +++ b/tests/snippets/wikitext/magic-word.txt @@ -0,0 +1,157 @@ +---input--- +__NOTOC__ +__FORCETOC__ +__TOC__ +__NOEDITSECTION__ +__NEWSECTIONLINK__ +__NONEWSECTIONLINK__ +__NOGALLERY__ +__HIDDENCAT__ +__EXPECTUNUSEDCATEGORY__ +__NOCONTENTCONVERT__ +__NOCC__ +__NOTITLECONVERT__ +__NOTC__ +__INDEX__ +__NOINDEX__ +__STATICREDIRECT__ +__NOGLOBAL__ +__DISAMBIG__ +__EXPECTED_UNCONNECTED_PAGE__ + +__notoc__ +__forcetoc__ +__toc__ +__noeditsection__ +__newsectionlink__ +__nonewsectionlink__ +__nogallery__ +__hiddencat__ +__expectunusedcategory__ +__nocontentconvert__ +__nocc__ +__notitleconvert__ +__notc__ +__index__ +__noindex__ +__staticredirect__ +__noglobal__ +__disambig__ +__expected_unconnected_page__ + +---tokens--- +'__NOTOC__' Name.Function.Magic +'\n' Text + +'__FORCETOC__' Name.Function.Magic +'\n' Text + +'__TOC__' Name.Function.Magic +'\n' Text + +'__NOEDITSECTION__' Name.Function.Magic +'\n' Text + +'__NEWSECTIONLINK__' Name.Function.Magic +'\n' Text + +'__NONEWSECTIONLINK__' Name.Function.Magic +'\n' Text + +'__NOGALLERY__' Name.Function.Magic +'\n' Text + +'__HIDDENCAT__' Name.Function.Magic +'\n' Text + +'__EXPECTUNUSEDCATEGORY__' Name.Function.Magic +'\n' Text + +'__NOCONTENTCONVERT__' Name.Function.Magic +'\n' Text + +'__NOCC__' Name.Function.Magic +'\n' Text + +'__NOTITLECONVERT__' Name.Function.Magic +'\n' Text + +'__NOTC__' Name.Function.Magic +'\n' Text + +'__INDEX__' Name.Function.Magic +'\n' Text + +'__NOINDEX__' Name.Function.Magic +'\n' Text + +'__STATICREDIRECT__' Name.Function.Magic +'\n' Text + +'__NOGLOBAL__' Name.Function.Magic +'\n' Text + +'__DISAMBIG__' Name.Function.Magic +'\n' Text + +'__EXPECTED_UNCONNECTED_PAGE__' Name.Function.Magic +'\n' Text + +'\n' Text + +'__notoc__' Name.Function.Magic +'\n' Text + +'__forcetoc__' Name.Function.Magic +'\n' Text + +'__toc__' Name.Function.Magic +'\n' Text + +'__noeditsection__' Name.Function.Magic +'\n' Text + +'__newsectionlink__' Text +'\n' Text + +'__nonewsectionlink__' Text +'\n' Text + +'__nogallery__' Name.Function.Magic +'\n' Text + +'__hiddencat__' Text +'\n' Text + +'__expectunusedcategory__' Text +'\n' Text + +'__nocontentconvert__' Name.Function.Magic +'\n' Text + +'__nocc__' Name.Function.Magic +'\n' Text + +'__notitleconvert__' Name.Function.Magic +'\n' Text + +'__notc__' Name.Function.Magic +'\n' Text + +'__index__' Text +'\n' Text + +'__noindex__' Text +'\n' Text + +'__staticredirect__' Text +'\n' Text + +'__noglobal__' Text +'\n' Text + +'__disambig__' Text +'\n' Text + +'__expected_unconnected_page__' Text +'\n' Text diff --git a/tests/snippets/wikitext/medialink.txt b/tests/snippets/wikitext/medialink.txt new file mode 100644 index 00000000..be51b8bb --- /dev/null +++ b/tests/snippets/wikitext/medialink.txt @@ -0,0 +1,171 @@ +---input--- +[[File:wiki.png|thumb|Wikipedia logo]] +[[File:wiki.png]] +[[File:wiki.png|alt=Puzzle globe logo]] +[[File:wiki.png|link=Wikipedia]] +[[File:wiki.png|frame|centre|alt=Puzzle globe|Wikipedia logo]] +[[File:wiki.png|thumb|left|alt=Puzzle globe|Wikipedia logo]] +[[File:wiki.png|50 px|Wikipedia encyclopedia]] +[[File:wiki.png|thumb|[[a|b]]]] +[[File:wiki.png|thumb|[https://www.google.com]]] + +[[Media:wiki.png|Image of jigsaw globe]] +[[media:Classical guitar scale.ogg|Sound]] + +---tokens--- +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'wiki.png' Name.Tag +'|' Punctuation +'thumb' Text +'|' Punctuation +'Wikipedia' Text +' ' Text +'logo' Text +']]' Punctuation +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'wiki.png' Name.Tag +']]' Punctuation +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'wiki.png' Name.Tag +'|' Punctuation +'alt' Name.Attribute +'=' Operator +'Puzzle' Text +' ' Text +'globe' Text +' ' Text +'logo' Text +']]' Punctuation +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'wiki.png' Name.Tag +'|' Punctuation +'link' Name.Attribute +'=' Operator +'Wikipedia' Text +']]' Punctuation +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'wiki.png' Name.Tag +'|' Punctuation +'frame' Text +'|' Punctuation +'centre' Text +'|' Punctuation +'alt' Name.Attribute +'=' Operator +'Puzzle' Text +' ' Text +'globe' Text +'|' Punctuation +'Wikipedia' Text +' ' Text +'logo' Text +']]' Punctuation +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'wiki.png' Name.Tag +'|' Punctuation +'thumb' Text +'|' Punctuation +'left' Text +'|' Punctuation +'alt' Name.Attribute +'=' Operator +'Puzzle' Text +' ' Text +'globe' Text +'|' Punctuation +'Wikipedia' Text +' ' Text +'logo' Text +']]' Punctuation +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'wiki.png' Name.Tag +'|' Punctuation +'50' Text +' ' Text +'px' Text +'|' Punctuation +'Wikipedia' Text +' ' Text +'encyclopedia' Text +']]' Punctuation +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'wiki.png' Name.Tag +'|' Punctuation +'thumb' Text +'|' Punctuation +'[[' Punctuation +'a' Name.Tag +'|' Punctuation +'b' Text +']]' Punctuation +']]' Punctuation +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'wiki.png' Name.Tag +'|' Punctuation +'thumb' Text +'|' Punctuation +'[' Punctuation +'https://www.google.com' Name.Label +']' Punctuation +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Media' Name.Namespace +':' Punctuation +'wiki.png' Name.Tag +'|' Punctuation +'Image' Text +' ' Text +'of' Text +' ' Text +'jigsaw' Text +' ' Text +'globe' Text +']]' Punctuation +'\n' Text + +'[[' Punctuation +'media' Name.Namespace +':' Punctuation +'Classical guitar scale.ogg' Name.Tag +'|' Punctuation +'Sound' Text +']]' Punctuation +'\n' Text diff --git a/tests/snippets/wikitext/only-highlight-first-redirect.txt b/tests/snippets/wikitext/only-highlight-first-redirect.txt new file mode 100644 index 00000000..2ca8c1c3 --- /dev/null +++ b/tests/snippets/wikitext/only-highlight-first-redirect.txt @@ -0,0 +1,22 @@ +---input--- +#REDIRECT [[Test]] + +#REDIRECT [[Test]] + +---tokens--- +'#REDIRECT' Keyword +' ' Text.Whitespace +'[[' Punctuation +'Test' Name.Tag +']]' Punctuation +'\n' Text.Whitespace + +'\n' Text + +'#' Keyword +'REDIRECT' Text +' ' Text +'[[' Punctuation +'Test' Name.Tag +']]' Punctuation +'\n' Text diff --git a/tests/snippets/wikitext/parser-function.txt b/tests/snippets/wikitext/parser-function.txt new file mode 100644 index 00000000..49e10f2c --- /dev/null +++ b/tests/snippets/wikitext/parser-function.txt @@ -0,0 +1,2717 @@ +---input--- +{{#speciale:userlogin}} + +{{#if: 1==2 | yes | no }} +{{#if:{{{1|}}}|You entered text in variable 1|There is no text in variable 1}} + +{{#ifeq: {{#expr:10^3}} | 1000 | equal | not equal}} + +{{#iferror: <strong class="error">a</strong> | error | correct }} + +{{#ifeq:{{{1}}}|condition1 + |<!--then-->branch1t{{ + #ifeq:{{{1}}}|condition2 + |<!--then-->branch1t2t{{#ifeq:{{{1}}}|condition4|<!--then-->branch1t2t4t|<!--else-->branch1t2t4e}} + |<!--else-->branch1t2e{{#ifeq:{{{1}}}|condition5|<!--then-->branch1t2e5t|<!--else-->branch1t2e5e}} + }} + |<!--else-->branch1e{{#ifeq:{{{1}}}|condition3 + |<!--then-->branch1e3t{{#ifeq:{{{1}}}|condition6|branch1e3t6t|branch1e3t6e}} + |<!--else-->branch1e3e{{ + #ifeq:{{{1}}}|condition7 + |branch1e3e7t + |branch1e3e7t + }} + }} +}} + +{{CURRENTYEAR}} +{{CURRENTMONTH}} +{{CURRENTMONTH1}} +{{CURRENTMONTHNAME}} +{{CURRENTMONTHNAMEGEN}} +{{CURRENTMONTHABBREV}} +{{CURRENTDAY}} +{{CURRENTDAY2}} +{{CURRENTDOW}} +{{CURRENTDAYNAME}} +{{CURRENTTIME}} +{{CURRENTHOUR}} +{{CURRENTWEEK}} +{{CURRENTTIMESTAMP}} +{{LOCALYEAR}} +{{LOCALMONTH}} +{{LOCALMONTH1}} +{{LOCALMONTHNAME}} +{{LOCALMONTHNAMEGEN}} +{{LOCALMONTHABBREV}} +{{LOCALDAY}} +{{LOCALDAY2}} +{{LOCALDOW}} +{{LOCALDAYNAME}} +{{LOCALTIME}} +{{LOCALHOUR}} +{{LOCALWEEK}} +{{LOCALTIMESTAMP}} +{{SITENAME}} +{{SERVER}} +{{SERVERNAME}} +{{DIRMARK}} +{{DIRECTIONMARK}} +{{SCRIPTPATH}} +{{STYLEPATH}} +{{CURRENTVERSION}} +{{CONTENTLANGUAGE}} +{{CONTENTLANG}} +{{PAGEID}} +{{PAGELANGUAGE}} +{{#language:{{PAGELANGUAGE}}}} +{{PROTECTIONLEVEL:action}} +{{PROTECTIONEXPIRY:action}} +{{CASCADINGSOURCES}} +{{REVISIONID}} +{{REVISIONDAY}} +{{REVISIONDAY2}} +{{REVISIONMONTH}} +{{REVISIONMONTH1}} +{{REVISIONYEAR}} +{{REVISIONTIMESTAMP}} +{{REVISIONUSER}} +{{REVISIONSIZE}} +{{DISPLAYTITLE:title}} +{{DISPLAYTITLE:title|noerror}} +{{DISPLAYTITLE:title|noreplace}} +{{DEFAULTSORT:sortkey}} +{{DEFAULTSORTKEY:sortkey}} +{{DEFAULTCATEGORYSORT:sortkey}} +{{DEFAULTSORT:sortkey|noerror}} +{{DEFAULTSORT:sortkey|noreplace}} +{{NUMBEROFPAGES}} +{{NUMBEROFARTICLES}} +{{NUMBEROFFILES}} +{{NUMBEROFEDITS}} +{{NUMBEROFUSERS}} +{{NUMBEROFADMINS}} +{{NUMBEROFACTIVEUSERS}} +{{PAGESINCATEGORY:categoryname}} +{{PAGESINCAT:categoryname}} +{{PAGESINCATEGORY:categoryname|all}} +{{PAGESINCATEGORY:categoryname|pages}} +{{PAGESINCATEGORY:categoryname|subcats}} +{{PAGESINCATEGORY:categoryname|files}} +{{NUMBERINGROUP:groupname}} +{{NUMINGROUP:groupname}} +{{PAGESINNS:index}} +{{PAGESINNAMESPACE:index}} +{{FULLPAGENAME}} +{{PAGENAME}} +{{BASEPAGENAME}} +{{ROOTPAGENAME}} +{{SUBPAGENAME}} +{{SUBJECTPAGENAME}} +{{ARTICLEPAGENAME}} +{{TALKPAGENAME}} +{{PAGENAME:Template:Main Page}} +{{PAGENAME:one/./three}} +{{FULLPAGENAMEE}} +{{PAGENAMEE}} +{{BASEPAGENAMEE}} +{{SUBPAGENAMEE}} +{{SUBJECTPAGENAMEE}} +{{ARTICLEPAGENAMEE}} +{{TALKPAGENAMEE}} +{{ROOTPAGENAMEE}} +{{NAMESPACE}} +{{NAMESPACENUMBER}} +{{SUBJECTSPACE}} +{{ARTICLESPACE}} +{{TALKSPACE}} +{{NAMESPACEE}} +{{SUBJECTSPACEE}} +{{ARTICLESPACEE}} +{{TALKSPACEE}} +{{NAMESPACENUMBER:MediaWiki}} +{{NAMESPACE:MediaWiki}} +{{NAMESPACE:Template:Main Page}} +{{SUBJECTSPACE:Template:Main Page}} +{{ARTICLESPACE:Template:Main Page}} +{{TALKSPACE:Template:Main Page}} +{{SUBJECTSPACE:Help talk}} +{{!}} +{{=}} +{{PAGEID: page name }} +{{PAGESIZE:page name}} +{{PAGESIZE: page name |R}} +{{PROTECTIONLEVEL:action | page name}} +{{PROTECTIONEXPIRY: action | page name}} +{{CASCADINGSOURCES: page name}} +{{REVISIONID: page name }} +{{REVISIONDAY: page name }} +{{REVISIONDAY2: page name }} +{{REVISIONMONTH: page name }} +{{REVISIONMONTH1: page name }} +{{REVISIONYEAR: page name }} +{{REVISIONTIMESTAMP: page name }} +{{REVISIONUSER: page name }} +{{localurl:page name}} +{{localurl:page name +|query_string}} +{{localurl:MediaWiki|printable=yes}} +{{fullurl:page name}} +{{fullurl:page name +|query_string}} +{{fullurl:interwiki:remote page name +|query_string}} +{{fullurl:Category:Top level|action=edit}} +{{fullurl:s:Electra|action=edit}} +{{fullurl:s:es:Electra|action=edit}} +{{canonicalurl:page name}} +{{canonicalurl:page name +|query_string}} +{{canonicalurl:interwiki:remote page name +|query_string}} +{{canonicalurl:Category:Top level|action=edit}} +{{filepath:file name}} +{{filepath:file name|nowiki}} +{{filepath:file name|thumbnail_size}} +{{filepath:Wiki.png|nowiki}} +{{filepath:Example.svg|300}} +{{urlencode:string}} +{{urlencode:string|QUERY}} +{{urlencode:string|WIKI}} +{{urlencode:string|PATH}} +{{urlencode:x:y/z á é|QUERY}} +{{urlencode:x:y/z á é|WIKI}} +{{urlencode:x:y/z á é|PATH}} +{{anchorencode:string}} +{{ns:}} +{{nse:}} +{{ns:-2}} +{{ns:0}} +{{ns:2}} +{{ns:4}} +{{ns:6}} +{{ns:8}} +{{ns:10}} +{{ns:12}} +{{ns:14}} +{{formatnum:unformatted number}} +{{formatnum:formatnum-formatted number|R}} +{{formatnum:unformatted number|NOSEP}} +{{formatnum:987654321.654321}} +{{formatnum:987,654,321.654321|R}} +{{formatnum:{{formatnum:987654321.654321}}}} +{{formatnum:00001}} +{{formatnum:987654321.654321 |NOSEP}} +{{formatnum:987654321.654321}} +{{formatnum:987654321.654321 |NOSEP}} +{{formatnum:৯৮,৭৬,৫৪,৩২১.৬৫৪৩২১ |R}} +{{formatnum:{{formatnum:987.654.321}}}} +{{formatnum:987,654.321|R}} +{{formatnum:987.654,321|R}} +{{formatnum:987 654,321|R}} +{{formatnum:987 654,321|R}} +{{#dateformat:date}} +{{#formatdate:date}} +{{#dateformat:date|format}} +{{#formatdate:date|format}} +{{#dateformat:25 dec 2009|ymd}} +{{#formatdate:dec 25,2009|dmy}} +{{#dateformat:2009-12-25|mdy}} +{{#formatdate:2009 dec 25|ISO 8601}} +{{#dateformat:25 decEmber|mdy}} +{{lc:string}} +{{lc:DATA CENTER}} +{{lcfirst:string}} +{{lcfirst:DATA center}} +{{uc:string}} +{{uc:text transform}} +{{ucfirst:string}} +{{ucfirst:text tRAnSFORM}} +{{padleft:xyz|stringlength}} +{{padleft:xyz|strlen|char}} +{{padleft:xyz|strlen|string}} +{{padleft:xyz|5}} +{{padleft:xyz|5|_}} +{{padleft:xyz|5|abc}} +{{padleft:xyz|2}} +{{padleft:|1|xyz}} +{{padright:xyz|stringlength}} +{{padright:xyz|strlen|char}} +{{padright:xyz|strlen|string}} +{{padright:xyz|5}} +{{padright:xyz|5|_}} +{{padright:xyz|5|abc}} +{{padright:xyz|2}} +{{padright:|1|xyz}} +{{PLURAL:2|is|are}} +{{PLURAL:1*1|is|are}} +{{PLURAL:21 mod 10|is|are}} +{{PLURAL:{{#expr:21 mod 10}}}} +{{PLURAL:1|is|are}} +{{PLURAL:2|is|are}} +{{PLURAL:-1|is|are}} +{{PLURAL:-2|is|are}} +{{PLURAL:0.5|is|are}} +{{PLURAL:1.5|is|are}} +{{PLURAL:-0.5|is|are}} +{{PLURAL:-1.5|is|are}} +{{PLURAL:5|1=Категория|Категории}} +{{PLURAL:3|страница|страницы|страниц}} +{{PLURAL:5|страница|страницы|страниц}} +{{GRAMMAR:N|noun}} +{{GENDER:username|text for every gender}} +{{GENDER:Username|male text|female text|text for unspecified}} +{{GENDER:|male text|female text|text for unspecified}} +{{GENDER:.|male text|female text|text for unspecified}} +{{int:message name}} +{{int:editsectionhint|MediaWiki}} +{{Page name|optional params}} +{{:xyz}} +{{int:xyz}} +{{#language:language code}} +{{#language:language code|target language code}} +{{#language:ar|en}} +{{#special:special page name}} +{{#speciale:special page name}} +{{#tag:tagname +|content +|attribute1=value1 +|attribute2=value2 +}} +{{#tag:ref|Citation on Magic words. |name = "multiple"}} + +---tokens--- +'{{' Punctuation +'#speciale' Name.Function +':' Punctuation +'userlogin' Text +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'#if' Name.Function +':' Punctuation +' ' Text +'1' Text +'=' Text +'=' Text +'2' Text +' ' Text +'|' Punctuation +' ' Text +'yes' Text +' ' Text +'|' Punctuation +' ' Text +'no' Text +' ' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#if' Name.Function +':' Punctuation +'{{{' Punctuation +'1' Name.Variable +'|' Punctuation +'}}}' Punctuation +'|' Punctuation +'You' Text +' ' Text +'entered' Text +' ' Text +'text' Text +' ' Text +'in' Text +' ' Text +'variable' Text +' ' Text +'1' Text +'|' Punctuation +'There' Text +' ' Text +'is' Text +' ' Text +'no' Text +' ' Text +'text' Text +' ' Text +'in' Text +' ' Text +'variable' Text +' ' Text +'1' Text +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'#ifeq' Name.Function +':' Punctuation +' ' Text +'{{' Punctuation +'#expr' Name.Function +':' Punctuation +'10' Text +'^' Text +'3' Text +'}}' Punctuation +' ' Text +'|' Punctuation +' ' Text +'1000' Text +' ' Text +'|' Punctuation +' ' Text +'equal' Text +' ' Text +'|' Punctuation +' ' Text +'not' Text +' ' Text +'equal' Text +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'#iferror' Name.Function +':' Punctuation +' ' Text +'<' Punctuation +'strong' Name.Tag +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'"' Literal.String.Double +'error' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'a' Text +'</' Punctuation +'strong' Name.Tag +'>' Punctuation +' ' Text +'|' Punctuation +' ' Text +'error' Text +' ' Text +'|' Punctuation +' ' Text +'correct' Text +' ' Text +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'#ifeq' Name.Function +':' Punctuation +'{{{' Punctuation +'1' Name.Variable +'}}}' Punctuation +'|' Punctuation +'condition1' Text +'\n' Text + +' ' Text +'|' Punctuation +'<!--then-->' Comment.Multiline +'branch1t' Text +'{{' Punctuation +'\n ' Text.Whitespace +'#ifeq' Name.Function +':' Punctuation +'{{{' Punctuation +'1' Name.Variable +'}}}' Punctuation +'|' Punctuation +'condition2' Text +'\n' Text + +' ' Text +'|' Punctuation +'<!--then-->' Comment.Multiline +'branch1t2t' Text +'{{' Punctuation +'#ifeq' Name.Function +':' Punctuation +'{{{' Punctuation +'1' Name.Variable +'}}}' Punctuation +'|' Punctuation +'condition4' Text +'|' Punctuation +'<!--then-->' Comment.Multiline +'branch1t2t4t' Text +'|' Punctuation +'<!--else-->' Comment.Multiline +'branch1t2t4e' Text +'}}' Punctuation +'\n' Text + +' ' Text +'|' Punctuation +'<!--else-->' Comment.Multiline +'branch1t2e' Text +'{{' Punctuation +'#ifeq' Name.Function +':' Punctuation +'{{{' Punctuation +'1' Name.Variable +'}}}' Punctuation +'|' Punctuation +'condition5' Text +'|' Punctuation +'<!--then-->' Comment.Multiline +'branch1t2e5t' Text +'|' Punctuation +'<!--else-->' Comment.Multiline +'branch1t2e5e' Text +'}}' Punctuation +'\n' Text + +' ' Text +'}}' Punctuation +'\n' Text + +' ' Text +'|' Punctuation +'<!--else-->' Comment.Multiline +'branch1e' Text +'{{' Punctuation +'#ifeq' Name.Function +':' Punctuation +'{{{' Punctuation +'1' Name.Variable +'}}}' Punctuation +'|' Punctuation +'condition3' Text +'\n' Text + +' ' Text +'|' Punctuation +'<!--then-->' Comment.Multiline +'branch1e3t' Text +'{{' Punctuation +'#ifeq' Name.Function +':' Punctuation +'{{{' Punctuation +'1' Name.Variable +'}}}' Punctuation +'|' Punctuation +'condition6' Text +'|' Punctuation +'branch1e3t6t' Text +'|' Punctuation +'branch1e3t6e' Text +'}}' Punctuation +'\n' Text + +' ' Text +'|' Punctuation +'<!--else-->' Comment.Multiline +'branch1e3e' Text +'{{' Punctuation +'\n ' Text.Whitespace +'#ifeq' Name.Function +':' Punctuation +'{{{' Punctuation +'1' Name.Variable +'}}}' Punctuation +'|' Punctuation +'condition7' Text +'\n' Text + +' ' Text +'|' Punctuation +'branch1e3e7t' Text +'\n' Text + +' ' Text +'|' Punctuation +'branch1e3e7t' Text +'\n' Text + +' ' Text +'}}' Punctuation +'\n' Text + +' ' Text +'}}' Punctuation +'\n' Text + +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'CURRENTYEAR' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTMONTH' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTMONTH1' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTMONTHNAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTMONTHNAMEGEN' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTMONTHABBREV' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTDAY' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTDAY2' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTDOW' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTDAYNAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTTIME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTHOUR' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTWEEK' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTTIMESTAMP' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALYEAR' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALMONTH' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALMONTH1' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALMONTHNAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALMONTHNAMEGEN' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALMONTHABBREV' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALDAY' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALDAY2' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALDOW' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALDAYNAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALTIME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALHOUR' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALWEEK' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'LOCALTIMESTAMP' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SITENAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SERVER' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SERVERNAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'DIRMARK' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'DIRECTIONMARK' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SCRIPTPATH' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'STYLEPATH' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CURRENTVERSION' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CONTENTLANGUAGE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CONTENTLANG' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGEID' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGELANGUAGE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#language' Name.Function +':' Punctuation +'{{' Punctuation +'PAGELANGUAGE' Name.Function +'}}' Punctuation +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PROTECTIONLEVEL' Name.Function +':' Punctuation +'action' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PROTECTIONEXPIRY' Name.Function +':' Punctuation +'action' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CASCADINGSOURCES' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONID' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONDAY' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONDAY2' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONMONTH' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONMONTH1' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONYEAR' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONTIMESTAMP' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONUSER' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONSIZE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'DISPLAYTITLE' Name.Function +':' Punctuation +'title' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'DISPLAYTITLE' Name.Function +':' Punctuation +'title' Text +'|' Punctuation +'noerror' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'DISPLAYTITLE' Name.Function +':' Punctuation +'title' Text +'|' Punctuation +'noreplace' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'DEFAULTSORT' Name.Function +':' Punctuation +'sortkey' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'DEFAULTSORTKEY' Name.Function +':' Punctuation +'sortkey' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'DEFAULTCATEGORYSORT' Name.Function +':' Punctuation +'sortkey' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'DEFAULTSORT' Name.Function +':' Punctuation +'sortkey' Text +'|' Punctuation +'noerror' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'DEFAULTSORT' Name.Function +':' Punctuation +'sortkey' Text +'|' Punctuation +'noreplace' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NUMBEROFPAGES' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NUMBEROFARTICLES' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NUMBEROFFILES' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NUMBEROFEDITS' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NUMBEROFUSERS' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NUMBEROFADMINS' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NUMBEROFACTIVEUSERS' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGESINCATEGORY' Name.Function +':' Punctuation +'categoryname' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGESINCAT' Name.Function +':' Punctuation +'categoryname' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGESINCATEGORY' Name.Function +':' Punctuation +'categoryname' Text +'|' Punctuation +'all' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGESINCATEGORY' Name.Function +':' Punctuation +'categoryname' Text +'|' Punctuation +'pages' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGESINCATEGORY' Name.Function +':' Punctuation +'categoryname' Text +'|' Punctuation +'subcats' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGESINCATEGORY' Name.Function +':' Punctuation +'categoryname' Text +'|' Punctuation +'files' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NUMBERINGROUP' Name.Function +':' Punctuation +'groupname' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NUMINGROUP' Name.Function +':' Punctuation +'groupname' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGESINNS' Name.Function +':' Punctuation +'index' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGESINNAMESPACE' Name.Function +':' Punctuation +'index' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'FULLPAGENAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGENAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'BASEPAGENAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ROOTPAGENAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SUBPAGENAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SUBJECTPAGENAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ARTICLEPAGENAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'TALKPAGENAME' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGENAME' Name.Function +':' Punctuation +'Template' Text +':' Text +'Main' Text +' ' Text +'Page' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGENAME' Name.Function +':' Punctuation +'one' Text +'/' Text +'.' Text +'/' Text +'three' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'FULLPAGENAMEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGENAMEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'BASEPAGENAMEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SUBPAGENAMEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SUBJECTPAGENAMEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ARTICLEPAGENAMEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'TALKPAGENAMEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ROOTPAGENAMEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NAMESPACE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NAMESPACENUMBER' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SUBJECTSPACE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ARTICLESPACE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'TALKSPACE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NAMESPACEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SUBJECTSPACEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ARTICLESPACEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'TALKSPACEE' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NAMESPACENUMBER' Name.Function +':' Punctuation +'MediaWiki' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NAMESPACE' Name.Function +':' Punctuation +'MediaWiki' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'NAMESPACE' Name.Function +':' Punctuation +'Template' Text +':' Text +'Main' Text +' ' Text +'Page' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SUBJECTSPACE' Name.Function +':' Punctuation +'Template' Text +':' Text +'Main' Text +' ' Text +'Page' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ARTICLESPACE' Name.Function +':' Punctuation +'Template' Text +':' Text +'Main' Text +' ' Text +'Page' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'TALKSPACE' Name.Function +':' Punctuation +'Template' Text +':' Text +'Main' Text +' ' Text +'Page' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'SUBJECTSPACE' Name.Function +':' Punctuation +'Help' Text +' ' Text +'talk' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'!' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'=' Name.Function +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGEID' Name.Function +':' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGESIZE' Name.Function +':' Punctuation +'page' Text +' ' Text +'name' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PAGESIZE' Name.Function +':' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +'|' Punctuation +'R' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PROTECTIONLEVEL' Name.Function +':' Punctuation +'action' Text +' ' Text +'|' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PROTECTIONEXPIRY' Name.Function +':' Punctuation +' ' Text +'action' Text +' ' Text +'|' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'CASCADINGSOURCES' Name.Function +':' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONID' Name.Function +':' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONDAY' Name.Function +':' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONDAY2' Name.Function +':' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONMONTH' Name.Function +':' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONMONTH1' Name.Function +':' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONYEAR' Name.Function +':' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONTIMESTAMP' Name.Function +':' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'REVISIONUSER' Name.Function +':' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'localurl' Name.Function +':' Punctuation +'page' Text +' ' Text +'name' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'localurl' Name.Function +':' Punctuation +'page' Text +' ' Text +'name' Text +'\n' Text + +'|' Punctuation +'query_string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'localurl' Name.Function +':' Punctuation +'MediaWiki' Text +'|' Punctuation +'printable' Name.Label +'=' Operator +'yes' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'fullurl' Name.Function +':' Punctuation +'page' Text +' ' Text +'name' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'fullurl' Name.Function +':' Punctuation +'page' Text +' ' Text +'name' Text +'\n' Text + +'|' Punctuation +'query_string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'fullurl' Name.Function +':' Punctuation +'interwiki' Text +':' Text +'remote' Text +' ' Text +'page' Text +' ' Text +'name' Text +'\n' Text + +'|' Punctuation +'query_string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'fullurl' Name.Function +':' Punctuation +'Category' Text +':' Text +'Top' Text +' ' Text +'level' Text +'|' Punctuation +'action' Name.Label +'=' Operator +'edit' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'fullurl' Name.Function +':' Punctuation +'s' Text +':' Text +'Electra' Text +'|' Punctuation +'action' Name.Label +'=' Operator +'edit' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'fullurl' Name.Function +':' Punctuation +'s' Text +':' Text +'es' Text +':' Text +'Electra' Text +'|' Punctuation +'action' Name.Label +'=' Operator +'edit' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'canonicalurl' Name.Function +':' Punctuation +'page' Text +' ' Text +'name' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'canonicalurl' Name.Function +':' Punctuation +'page' Text +' ' Text +'name' Text +'\n' Text + +'|' Punctuation +'query_string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'canonicalurl' Name.Function +':' Punctuation +'interwiki' Text +':' Text +'remote' Text +' ' Text +'page' Text +' ' Text +'name' Text +'\n' Text + +'|' Punctuation +'query_string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'canonicalurl' Name.Function +':' Punctuation +'Category' Text +':' Text +'Top' Text +' ' Text +'level' Text +'|' Punctuation +'action' Name.Label +'=' Operator +'edit' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'filepath' Name.Function +':' Punctuation +'file' Text +' ' Text +'name' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'filepath' Name.Function +':' Punctuation +'file' Text +' ' Text +'name' Text +'|' Punctuation +'nowiki' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'filepath' Name.Function +':' Punctuation +'file' Text +' ' Text +'name' Text +'|' Punctuation +'thumbnail_size' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'filepath' Name.Function +':' Punctuation +'Wiki' Text +'.' Text +'png' Text +'|' Punctuation +'nowiki' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'filepath' Name.Function +':' Punctuation +'Example' Text +'.' Text +'svg' Text +'|' Punctuation +'300' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'urlencode' Name.Function +':' Punctuation +'string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'urlencode' Name.Function +':' Punctuation +'string' Text +'|' Punctuation +'QUERY' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'urlencode' Name.Function +':' Punctuation +'string' Text +'|' Punctuation +'WIKI' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'urlencode' Name.Function +':' Punctuation +'string' Text +'|' Punctuation +'PATH' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'urlencode' Name.Function +':' Punctuation +'x' Text +':' Text +'y' Text +'/' Text +'z' Text +' ' Text +'á' Text +' ' Text +'é' Text +'|' Punctuation +'QUERY' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'urlencode' Name.Function +':' Punctuation +'x' Text +':' Text +'y' Text +'/' Text +'z' Text +' ' Text +'á' Text +' ' Text +'é' Text +'|' Punctuation +'WIKI' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'urlencode' Name.Function +':' Punctuation +'x' Text +':' Text +'y' Text +'/' Text +'z' Text +' ' Text +'á' Text +' ' Text +'é' Text +'|' Punctuation +'PATH' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'anchorencode' Name.Function +':' Punctuation +'string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ns' Name.Function +':' Punctuation +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'nse' Name.Function +':' Punctuation +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ns' Name.Function +':' Punctuation +'-' Text +'2' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ns' Name.Function +':' Punctuation +'0' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ns' Name.Function +':' Punctuation +'2' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ns' Name.Function +':' Punctuation +'4' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ns' Name.Function +':' Punctuation +'6' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ns' Name.Function +':' Punctuation +'8' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ns' Name.Function +':' Punctuation +'10' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ns' Name.Function +':' Punctuation +'12' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ns' Name.Function +':' Punctuation +'14' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'unformatted' Text +' ' Text +'number' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'formatnum' Text +'-' Text +'formatted' Text +' ' Text +'number' Text +'|' Punctuation +'R' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'unformatted' Text +' ' Text +'number' Text +'|' Punctuation +'NOSEP' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'987654321' Text +'.' Text +'654321' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'987' Text +',' Text +'654' Text +',' Text +'321' Text +'.' Text +'654321' Text +'|' Punctuation +'R' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'987654321' Text +'.' Text +'654321' Text +'}}' Punctuation +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'00001' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'987654321' Text +'.' Text +'654321' Text +' ' Text +'|' Punctuation +'NOSEP' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'987654321' Text +'.' Text +'654321' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'987654321' Text +'.' Text +'654321' Text +' ' Text +'|' Punctuation +'NOSEP' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'৯৮' Text +',' Text +'৭৬' Text +',' Text +'৫৪' Text +',' Text +'৩২১' Text +'.' Text +'৬৫৪৩২১' Text +' ' Text +'|' Punctuation +'R' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'987' Text +'.' Text +'654' Text +'.' Text +'321' Text +'}}' Punctuation +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'987' Text +',' Text +'654' Text +'.' Text +'321' Text +'|' Punctuation +'R' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'987' Text +'.' Text +'654' Text +',' Text +'321' Text +'|' Punctuation +'R' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'987' Text +' ' Text +'654' Text +',' Text +'321' Text +'|' Punctuation +'R' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'formatnum' Name.Function +':' Punctuation +'987' Text +' ' Name.Entity +'654' Text +',' Text +'321' Text +'|' Punctuation +'R' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#dateformat' Name.Function +':' Punctuation +'date' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#formatdate' Name.Function +':' Punctuation +'date' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#dateformat' Name.Function +':' Punctuation +'date' Text +'|' Punctuation +'format' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#formatdate' Name.Function +':' Punctuation +'date' Text +'|' Punctuation +'format' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#dateformat' Name.Function +':' Punctuation +'25' Text +' ' Text +'dec' Text +' ' Text +'2009' Text +'|' Punctuation +'ymd' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#formatdate' Name.Function +':' Punctuation +'dec' Text +' ' Text +'25' Text +',' Text +'2009' Text +'|' Punctuation +'dmy' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#dateformat' Name.Function +':' Punctuation +'2009' Text +'-' Text +'12' Text +'-' Text +'25' Text +'|' Punctuation +'mdy' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#formatdate' Name.Function +':' Punctuation +'2009' Text +' ' Text +'dec' Text +' ' Text +'25' Text +'|' Punctuation +'ISO' Text +' ' Text +'8601' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#dateformat' Name.Function +':' Punctuation +'25' Text +' ' Text +'decEmber' Text +'|' Punctuation +'mdy' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'lc' Name.Function +':' Punctuation +'string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'lc' Name.Function +':' Punctuation +'DATA' Text +' ' Text +'CENTER' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'lcfirst' Name.Function +':' Punctuation +'string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'lcfirst' Name.Function +':' Punctuation +'DATA' Text +' ' Text +'center' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'uc' Name.Function +':' Punctuation +'string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'uc' Name.Function +':' Punctuation +'text' Text +' ' Text +'transform' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ucfirst' Name.Function +':' Punctuation +'string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'ucfirst' Name.Function +':' Punctuation +'text' Text +' ' Text +'tRAnSFORM' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padleft' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'stringlength' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padleft' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'strlen' Text +'|' Punctuation +'char' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padleft' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'strlen' Text +'|' Punctuation +'string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padleft' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'5' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padleft' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'5' Text +'|' Punctuation +'_' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padleft' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'5' Text +'|' Punctuation +'abc' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padleft' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'2' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padleft' Name.Function +':' Punctuation +'|' Punctuation +'1' Text +'|' Punctuation +'xyz' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padright' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'stringlength' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padright' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'strlen' Text +'|' Punctuation +'char' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padright' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'strlen' Text +'|' Punctuation +'string' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padright' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'5' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padright' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'5' Text +'|' Punctuation +'_' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padright' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'5' Text +'|' Punctuation +'abc' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padright' Name.Function +':' Punctuation +'xyz' Text +'|' Punctuation +'2' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'padright' Name.Function +':' Punctuation +'|' Punctuation +'1' Text +'|' Punctuation +'xyz' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'2' Text +'|' Punctuation +'is' Text +'|' Punctuation +'are' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'1' Text +'*' Text +'1' Text +'|' Punctuation +'is' Text +'|' Punctuation +'are' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'21' Text +' ' Text +'mod' Text +' ' Text +'10' Text +'|' Punctuation +'is' Text +'|' Punctuation +'are' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'{{' Punctuation +'#expr' Name.Function +':' Punctuation +'21' Text +' ' Text +'mod' Text +' ' Text +'10' Text +'}}' Punctuation +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'1' Text +'|' Punctuation +'is' Text +'|' Punctuation +'are' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'2' Text +'|' Punctuation +'is' Text +'|' Punctuation +'are' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'-' Text +'1' Text +'|' Punctuation +'is' Text +'|' Punctuation +'are' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'-' Text +'2' Text +'|' Punctuation +'is' Text +'|' Punctuation +'are' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'0' Text +'.' Text +'5' Text +'|' Punctuation +'is' Text +'|' Punctuation +'are' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'1' Text +'.' Text +'5' Text +'|' Punctuation +'is' Text +'|' Punctuation +'are' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'-' Text +'0' Text +'.' Text +'5' Text +'|' Punctuation +'is' Text +'|' Punctuation +'are' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'-' Text +'1' Text +'.' Text +'5' Text +'|' Punctuation +'is' Text +'|' Punctuation +'are' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'5' Text +'|' Punctuation +'1' Name.Label +'=' Operator +'Категория' Text +'|' Punctuation +'Категории' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'3' Text +'|' Punctuation +'страница' Text +'|' Punctuation +'страницы' Text +'|' Punctuation +'страниц' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'PLURAL' Name.Function +':' Punctuation +'5' Text +'|' Punctuation +'страница' Text +'|' Punctuation +'страницы' Text +'|' Punctuation +'страниц' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'GRAMMAR' Name.Function +':' Punctuation +'N' Text +'|' Punctuation +'noun' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'GENDER' Name.Function +':' Punctuation +'username' Text +'|' Punctuation +'text' Text +' ' Text +'for' Text +' ' Text +'every' Text +' ' Text +'gender' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'GENDER' Name.Function +':' Punctuation +'Username' Text +'|' Punctuation +'male' Text +' ' Text +'text' Text +'|' Punctuation +'female' Text +' ' Text +'text' Text +'|' Punctuation +'text' Text +' ' Text +'for' Text +' ' Text +'unspecified' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'GENDER' Name.Function +':' Punctuation +'|' Punctuation +'male' Text +' ' Text +'text' Text +'|' Punctuation +'female' Text +' ' Text +'text' Text +'|' Punctuation +'text' Text +' ' Text +'for' Text +' ' Text +'unspecified' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'GENDER' Name.Function +':' Punctuation +'.' Text +'|' Punctuation +'male' Text +' ' Text +'text' Text +'|' Punctuation +'female' Text +' ' Text +'text' Text +'|' Punctuation +'text' Text +' ' Text +'for' Text +' ' Text +'unspecified' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'int' Name.Function +':' Punctuation +'message' Text +' ' Text +'name' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'int' Name.Function +':' Punctuation +'editsectionhint' Text +'|' Punctuation +'MediaWiki' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'Page' Name.Tag +' ' Name.Tag +'name' Name.Tag +'|' Punctuation +'optional' Text +' ' Text +'params' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +':' Punctuation +'xyz' Name.Tag +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'int' Name.Function +':' Punctuation +'xyz' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#language' Name.Function +':' Punctuation +'language' Text +' ' Text +'code' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#language' Name.Function +':' Punctuation +'language' Text +' ' Text +'code' Text +'|' Punctuation +'target' Text +' ' Text +'language' Text +' ' Text +'code' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#language' Name.Function +':' Punctuation +'ar' Text +'|' Punctuation +'en' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#special' Name.Function +':' Punctuation +'special' Text +' ' Text +'page' Text +' ' Text +'name' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#speciale' Name.Function +':' Punctuation +'special' Text +' ' Text +'page' Text +' ' Text +'name' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#tag' Name.Function +':' Punctuation +'tagname' Text +'\n' Text + +'|' Punctuation +'content' Text +'\n' Text + +'|' Punctuation +'attribute1' Name.Label +'=' Operator +'value1' Text +'\n' Text + +'|' Punctuation +'attribute2' Name.Label +'=' Operator +'value2' Text +'\n' Text + +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'#tag' Name.Function +':' Punctuation +'ref' Text +'|' Punctuation +'Citation' Text +' ' Text +'on' Text +' ' Text +'Magic' Text +' ' Text +'words' Text +'.' Text +' ' Text +'|' Punctuation +'name ' Name.Label +'=' Operator +' ' Text +'"' Text +'multiple' Text +'"' Text +'}}' Punctuation +'\n' Text diff --git a/tests/snippets/wikitext/parser-tag.txt b/tests/snippets/wikitext/parser-tag.txt new file mode 100644 index 00000000..83e2d605 --- /dev/null +++ b/tests/snippets/wikitext/parser-tag.txt @@ -0,0 +1,2133 @@ +---input--- +<pre>The <pre> tag ignores [[wiki]] +''markup'' as does the <nowiki> +tag. Additionally, <pre> displays +in a mono-spaced font, and does +not reformat text spaces. +It still interprets special +characters: →</pre> + +<pre class="blah">Ola +Oi +</pre> + +<nowiki> +The <nowiki> tag ignores [[wiki]] +''markup''. It reformats text by +removing newlines and multiple +spaces. It still interprets +characters specified by +&name;: → +</nowiki> + +<nowiki /># Ordered list +'<nowiki />'Italics' markup'<nowiki />' +<nowiki>[[Example]]</nowiki> +<nowiki><!-- revealed --></nowiki> +<nowiki> +~~~~</nowiki> + +<chem>Y^{99+}</chem> +<chem>CaSO4.1/2H2O + 1\!1/2 H2O -> CaSO4.2H2O</chem> +<chem>{C_\mathit{x}H_\mathit{y}} + \mathit{z}O2 -> {\mathit{x}CO2} + \frac{\mathit{y}}{2}H2O</chem> +<ce>{C_\mathit{x}H_\mathit{y}} + \mathit{z}O2 -> {\mathit{x}CO2} + \frac{\mathit{y}}{2}H2O</ce> + +<hiero>P2</hiero> + +<imagemap> +# sjfhasdkjfhsadlkjahl + +File:The Last Supper - Leonardo Da Vinci - High Resolution 32x16.jpg|thumb|center|500px|alt=''The Last Supper'' by Leonardo da Vinci - Clickable Image|Image map example. Clicking on a person in the picture causes the browser to load the appropriate article. +poly 550 2550 750 2400 1150 2300 1150 2150 1200 2075 1500 2125 1525 2300 1350 2800 1450 3000 1700 3300 1300 3475 650 3500 550 3300 450 3000 [[w:Bartholomew the Apostle|Bartholomew]] +poly 1575 2300 1625 2150 1900 2150 1925 2500 1875 2600 1800 2750 1600 3250 1425 3100 1400 2800 1375 2600 [[w:James, son of Alphaeus|James Minor]] +poly 1960 2150 2200 2150 2350 2500 2450 2575 2375 2725 2375 2900 2225 3100 2225 3225 1600 3225 1825 2700 1975 2450 1925 2300 [[w:Saint Andrew|Andrew]] +poly 2450 2575 2775 2500 2700 2650 2800 2700 2600 3000 2600 3250 2300 3250 2200 3200 2300 3000 [[w:Saint Peter|Peter]] +poly 2750 2500 2950 2400 3125 2600 3175 2700 3300 2850 3700 3200 3750 3200 3650 3350 3400 3200 3000 3350 2600 3325 2750 2800 2900 2700 2700 2650 [[w:Judas Iscariot|Judas]] +poly 3000 2350 3300 2350 3350 2660 3560 2600 3565 2690 3250 2800 3125 2575 [[w:Saint Peter|Peter]] +poly 3332 2338 3528 2240 4284 3024 4074 3332 3864 3290 3780 3150 3668 3192 3598 3024 3374 2870 3388 2772 3542 2800 3668 2702 3542 2590 3430 2604 3350 2600 3300 2500[[w:John the Apostle|John]] +poly 4775 2184 4915 2128 5055 2212 5083 2352 5111 2464 5181 2604 5307 2744 5573 3052 5615 3192 5657 3290 5573 3402 5461 3332 5335 3248 4495 3248 4439 3388 4243 3388 4075 3360 4173 3136 4327 3010 4509 2730 4663 2520 4733 2394 [[w:Jesus]] +poly 5900 2100 5900 2150 5800 2400 5800 2500 5675 2589 5480 2671 5438 2507 5425 2301 5589 2452 5630 2301 5650 2100 [[w:Thomas the Apostle|Thomas]] +poly 5918 2150 6041 2109 6137 2246 6192 2411 6110 2589 6110 2726 6192 2822 6302 2740 6589 3109 5658 3178 5575 2918 5300 2698 5233 2589 5274 2438 5370 2507 5521 2685 5617 2671 5712 2575 5822 2507 5808 2287 5822 2175 [[w:James, son of Zebedee|James Greater]] +poly 6137 2013 6439 2013 6863 2260 7110 2515 6726 2675 6507 2548 6425 2630 6356 2753 6548 2849 6699 2781 7082 2794 7178 3109 6699 3178 6548 2986 6397 2835 6165 2775 6110 2589 6233 2438 6302 2383 6151 2287 6096 2164 [[w:Philip the Apostle|Philip]] +poly 7635 2123 7800 2013 8000 2055 8025 2287 7950 2438 8000 2698 8055 2918 7959 3164 7233 3164 7124 2972 7124 2794 6548 2794 6384 2781 6384 2671 6493 2575 6750 2650 7075 2550 7219 2400 7625 2300 [[w:Matthew the Apostle|Matthew]] +poly 8325 2096 8600 2109 8635 2493 8615 2726 8439 2781 8274 2740 8125 2835 8151 2931 8400 2975 8411 3068 8589 3041 8617 3205 7987 3260 8124 3027 7987 2644 7904 2493 7959 2425 8096 2356 [[w:Judas Thaddaeus|Jude]] +poly 8800 2150 8900 2125 9055 2150 9125 2397 9400 2475 9550 2931 9625 3301 9151 3397 8535 3219 8726 3014 8466 3068 8411 2918 8178 2931 8124 2835 8329 2753 8535 2794 8726 2603 8725 2342 [[w:Simon the Zealot|Simon]] +rect 269 140 344 305 [[Claude Martin]] +rect 124 147 181 298 [[Antoine Polier|Antoine-Louis Polier]] +desc none +</imagemap> + +<rss max=4 highlight="community wiki foundation">https://wikimediafoundation.org/news/feed/</rss> + +<inputbox> +type=create +break=no +</inputbox> +<inputbox> +type= +bgcolor= +width= +page= +default= +preload= +editintro= +buttonlabel= +hidden= +searchbuttonlabel= +fulltextbutton= +labeltext= +break= +namespaces= +prefix= +placeholder= +minor= +nosummary= +summary= +id= +inline= +dir= +preloadparams[]= +searchfilter= +useve= +arialabel= +</inputbox> + +<gallery> +File:Example.jpg +File:Example.jpg +</gallery> +<gallery mode=packed heights=150px style="text-align:left"> +a|1 +Detroit Publishing Co. - A Yeoman of the Guard (N.B. actually a Yeoman Warder), full restoration.jpg|A Yeoman Warder, from a Victorian-era [[photochrom]] +Official_program_-_Woman_suffrage_procession_March_3,_1913_-_crop.jpg|The Official program of the 1913 Woman Suffrage Procession held in Washington, D.C. +Joseph Ferdinand Keppler - The Pirate Publisher - Puck Magazine - Restoration by Adam Cuerden.jpg|"The Pirate Publisher", a satire of copyright infringement from the magazine ''[[Puck (magazine)|Puck]]''. +</gallery> +<gallery caption="Sample gallery" widths="180px" heights="120px" > +Wiki.png|Captioned +Wiki.png|alt=The Wikipedia logo|Captioned with alt text +Wiki.png|[[Help:Contents/Links|Links]] can be put in captions. +Wiki.png|Full [[MediaWiki]]<br/>[[syntax]] may now be used... +</gallery> +<gallery> + +Detroit Publishing Co. - A Yeoman of the Guard (N.B. actually a Yeoman Warder), full restoration.jpg|1 +Official_program_-_Woman_suffrage_procession_March_3,_1913_-_crop.jpg|2 +Thurston, the famous magician - East Indian Rope Trick.jpg|3 +Joseph Ferdinand Keppler - The Pirate Publisher - Puck Magazine - Restoration by Adam Cuerden.jpg|4 +</gallery> + +<charinsert>“+” ‘+’ «+» ‹+› „+“ ‚+‘ [[+]] {{+}}</charinsert> + +<templatestyles src="Example/styles.css" wrapper="div.example" /> + +<DynamicPageList> +category=foo +count=20 +namespace=file +addfirstcategorydate=ymd +imagewidth=70 +galleryshowfilesize=yes +galleryshowfilename=yes +imagesperrow=7 +gallerycaption=Galleries! +ordermethod=sortkey +order=ascending +mode=gallery +offset=12 +</DynamicPageList> + +<references /> + +<poem> +In [[Wikipedia:Xanadu|Xanadu]] did Kubla Khan +A stately pleasure-dome decree: +Where Alph, the sacred river, ran +Through caverns measureless to man +Down to a sunless sea. + +So twice five miles of fertile ground +With walls and towers were girdled round: +And there were gardens bright with sinuous rills, +Where blossomed many an incense-bearing tree; +And here were forests ancient as the hills, +Enfolding sunny spots of greenery. +</poem> + +<categorytree mode="categories">Manual</categorytree> +<categorytree namespaces="Category">Manual</categorytree> +<categorytree>Manual</categorytree> +<categorytree>''Manual''[[a]]&</categorytree> + +<onlyinclude>My content</onlyinclude> +<includeonly>My content</includeonly> +<noinclude>My content</noinclude> + +<syntaxhighlight lang="cpp"> +#include <iostream> +int m2 (int ax, char *p_ax) { + std::cout <<"Hello World!"; + return 0; +}</syntaxhighlight> +<source lang="cpp"> +#include <iostream> +int m2 (int ax, char *p_ax) { + std::cout <<"Hello World!"; + return 0; +}</source> +<syntaxhighlight lang="non-exist"> +#include <iostream> +int m2 (int ax, char *p_ax) { + std::cout <<"Hello World!"; + return 0; +}</syntaxhighlight> +<syntaxhighlight lang=cpp> +#include <iostream> +</syntaxhighlight> +<syntaxhighlight lang=cpppp p> +#include <iostream> +</syntaxhighlight> +<syntaxhighlight lang='cpp'> +#include <iostream> +</syntaxhighlight> +<syntaxhighlight> +#include <iostream> +</syntaxhighlight> +<syntaxhighlight/> +<syntaxhighlight lang="js" lang='cpp' aalang=typescript> +#include <iostream> +</syntaxhighlight> +<syntaxhighlight /> + +<math>2x \times 4y \div 6z + 8 - \frac {y}{z^2} = 0</math> +<math>\sin 2\pi x + \ln e</math> +<math display=block>\sum_{n=0}^\infty \frac{x^n}{n!}</math> + +<score>\relative c' { fis d fis a d f e d c cis d e a g f ees }</score> +<score lang="lilypond">\relative c' { fis d fis a d f e d c cis d e a g f ees }</score> +<score lang="ABC"> +X:1 +M:C +L:1/4 +K:C +C, D, E, F,|G, A, B, C|D E F G|A B c d| +e f g a|b c' d' e'|f' g' a' b'|] +</score> +<score lang=not-exist>\relative c' { fis d fis a d f e d c cis d e a g f ees }</score> + +<ref name="reference name">add_template_name_here</ref> + +<templatedata> +{ + "description": "Label unsigned comments in a conversation.", + "params": { + "user": { + "label": "User's name", + "type": "wiki-user-name", + "required": true, + "description": "User name of person who forgot to sign their comment.", + "aliases": ["1"] + }, + "date": { + "label": "Date", + "suggested": true, + "description": { + "en": "Timestamp of when the comment was posted, in YYYY-MM-DD format." + }, + "aliases": ["2"], + "autovalue": "{{subst:#time:Y-m-d}}" + }, + "year": { + "label": "Year", + "type": "number" + }, + "month": { + "label": "Month", + "inherits": "year" + }, + "day": { + "label": "Day", + "inherits": "year" + }, + "comment": { + "required": false + } + }, + "sets": [ + { + "label": "Date", + "params": ["year", "month", "day"] + } + ], + "maps": { + "ExampleConsumer": { + "foo": "user", + "bar": ["year", "month", "day"], + "quux": [ + "date", + ["day", "month"], + ["month", "year"], + "year" + ] + } + } +} +</templatedata> + +* <translate>This is a long list:</translate> +** <translate>There are more than 160 words in this list,</translate> +** <translate>or there are more than 8 items.</translate> +* <translate>So it is better to split it in several smaller units.</translate> +* <translate>But we must exclude bullet points from translate tags to keep the list accessible.</translate> + +<tvar name=1>1</tvar> +<span <tvar name=attr>class="css_class" style="background-color:blue"</tvar>>hello</span> +<span <tvar|attr>class="css_class" style="background-color:blue"</>>hello</span> +{{<tvar name=1>center|5px</tvar>|hello}} + +---tokens--- +'<' Punctuation +'pre' Name.Tag +'>' Punctuation +'The' Text +' ' Text +'<' Name.Entity +'pre' Text +'>' Name.Entity +' ' Text +'tag' Text +' ' Text +'ignores' Text +' ' Text +'[' Text +'[' Text +'wiki' Text +']' Text +']' Text +'\n' Text + +"'" Text +"'" Text +'markup' Text +"'" Text +"'" Text +' ' Text +'as' Text +' ' Text +'does' Text +' ' Text +'the' Text +' ' Text +'<' Name.Entity +'nowiki' Text +'>' Name.Entity +'\n' Text + +'tag' Text +'.' Text +' ' Text +'Additionally' Text +',' Text +' ' Text +'<' Name.Entity +'pre' Text +'>' Name.Entity +' ' Text +'displays' Text +'\n' Text + +'in' Text +' ' Text +'a' Text +' ' Text +'mono' Text +'-' Text +'spaced' Text +' ' Text +'font' Text +',' Text +' ' Text +'and' Text +' ' Text +'does' Text +'\n' Text + +'not' Text +' ' Text +'reformat' Text +' ' Text +'text' Text +' ' Text +'spaces' Text +'.' Text +'\n' Text + +'It' Text +' ' Text +'still' Text +' ' Text +'interprets' Text +' ' Text +'special' Text +'\n' Text + +'characters' Text +':' Text +' ' Text +'→' Name.Entity +'</' Punctuation +'pre' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'pre' Name.Tag +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'"' Literal.String.Double +'blah' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'Ola' Text +'\n' Text + +'Oi' Text +'\n' Text + +'</' Punctuation +'pre' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'\n' Text + +'The' Text +' ' Text +'<' Text +'nowiki' Text +'>' Text +' ' Text +'tag' Text +' ' Text +'ignores' Text +' ' Text +'[' Text +'[' Text +'wiki' Text +']' Text +']' Text +'\n' Text + +"'" Text +"'" Text +'markup' Text +"'" Text +"'" Text +'.' Text +' ' Text +'It' Text +' ' Text +'reformats' Text +' ' Text +'text' Text +' ' Text +'by' Text +'\n' Text + +'removing' Text +' ' Text +'newlines' Text +' ' Text +'and' Text +' ' Text +'multiple' Text +'\n' Text + +'spaces' Text +'.' Text +' ' Text +'It' Text +' ' Text +'still' Text +' ' Text +'interprets' Text +'\n' Text + +'characters' Text +' ' Text +'specified' Text +' ' Text +'by' Text +'\n' Text + +'&' Name.Entity +'name' Text +';' Text +':' Text +' ' Text +'→' Name.Entity +'\n' Text + +'</' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'nowiki' Name.Tag +' ' Text.Whitespace +'/>' Punctuation +'#' Text +' ' Text +'Ordered' Text +' ' Text +'list' Text +'\n' Text + +"'" Text +'<' Punctuation +'nowiki' Name.Tag +' ' Text.Whitespace +'/>' Punctuation +"'" Text +'Italics' Text +"'" Text +' ' Text +'markup' Text +"'" Text +'<' Punctuation +'nowiki' Name.Tag +' ' Text.Whitespace +'/>' Punctuation +"'" Text +'\n' Text + +'<' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'[' Text +'[' Text +'Example' Text +']' Text +']' Text +'</' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'<' Text +'!' Text +'-' Text +'-' Text +' ' Text +'revealed' Text +' ' Text +'-' Text +'-' Text +'>' Text +'</' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'\n' Text + +'~' Text +'~' Text +'~' Text +'~' Text +'</' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'chem' Name.Tag +'>' Punctuation +'Y' Text +'^' Name.Builtin +'{' Name.Builtin +'99+' Text +'}' Name.Builtin +'</' Punctuation +'chem' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'chem' Name.Tag +'>' Punctuation +'CaSO4.1/2H2O + 1' Text +'\\!' Keyword +'1/2 H2O -> CaSO4.2H2O' Text +'</' Punctuation +'chem' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'chem' Name.Tag +'>' Punctuation +'{' Name.Builtin +'C' Text +'_' Name.Builtin +'\\mathit' Keyword +'{' Name.Builtin +'x' Text +'}' Name.Builtin +'H' Text +'_' Name.Builtin +'\\mathit' Keyword +'{' Name.Builtin +'y' Text +'}' Name.Builtin +'}' Name.Builtin +' + ' Text +'\\mathit' Keyword +'{' Name.Builtin +'z' Text +'}' Name.Builtin +'O2 -> ' Text +'{' Name.Builtin +'\\mathit' Keyword +'{' Name.Builtin +'x' Text +'}' Name.Builtin +'CO2' Text +'}' Name.Builtin +' + ' Text +'\\frac' Keyword +'{' Name.Builtin +'\\mathit' Keyword +'{' Name.Builtin +'y' Text +'}' Name.Builtin +'}' Name.Builtin +'{' Name.Builtin +'2' Text +'}' Name.Builtin +'H2O' Text +'</' Punctuation +'chem' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'ce' Name.Tag +'>' Punctuation +'{' Name.Builtin +'C' Text +'_' Name.Builtin +'\\mathit' Keyword +'{' Name.Builtin +'x' Text +'}' Name.Builtin +'H' Text +'_' Name.Builtin +'\\mathit' Keyword +'{' Name.Builtin +'y' Text +'}' Name.Builtin +'}' Name.Builtin +' + ' Text +'\\mathit' Keyword +'{' Name.Builtin +'z' Text +'}' Name.Builtin +'O2 -> ' Text +'{' Name.Builtin +'\\mathit' Keyword +'{' Name.Builtin +'x' Text +'}' Name.Builtin +'CO2' Text +'}' Name.Builtin +' + ' Text +'\\frac' Keyword +'{' Name.Builtin +'\\mathit' Keyword +'{' Name.Builtin +'y' Text +'}' Name.Builtin +'}' Name.Builtin +'{' Name.Builtin +'2' Text +'}' Name.Builtin +'H2O' Text +'</' Punctuation +'ce' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'hiero' Name.Tag +'>' Punctuation +'P2' Text +'</' Punctuation +'hiero' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'imagemap' Name.Tag +'>' Punctuation +"\n# sjfhasdkjfhsadlkjahl\n\nFile:The Last Supper - Leonardo Da Vinci - High Resolution 32x16.jpg|thumb|center|500px|alt=''The Last Supper'' by Leonardo da Vinci - Clickable Image|Image map example. Clicking on a person in the picture causes the browser to load the appropriate article.\npoly 550 2550 750 2400 1150 2300 1150 2150 1200 2075 1500 2125 1525 2300 1350 2800 1450 3000 1700 3300 1300 3475 650 3500 550 3300 450 3000 [[w:Bartholomew the Apostle|Bartholomew]]\npoly 1575 2300 1625 2150 1900 2150 1925 2500 1875 2600 1800 2750 1600 3250 1425 3100 1400 2800 1375 2600 [[w:James, son of Alphaeus|James Minor]]\npoly 1960 2150 2200 2150 2350 2500 2450 2575 2375 2725 2375 2900 2225 3100 2225 3225 1600 3225 1825 2700 1975 2450 1925 2300 [[w:Saint Andrew|Andrew]]\npoly 2450 2575 2775 2500 2700 2650 2800 2700 2600 3000 2600 3250 2300 3250 2200 3200 2300 3000 [[w:Saint Peter|Peter]]\npoly 2750 2500 2950 2400 3125 2600 3175 2700 3300 2850 3700 3200 3750 3200 3650 3350 3400 3200 3000 3350 2600 3325 2750 2800 2900 2700 2700 2650 [[w:Judas Iscariot|Judas]]\npoly 3000 2350 3300 2350 3350 2660 3560 2600 3565 2690 3250 2800 3125 2575 [[w:Saint Peter|Peter]]\npoly 3332 2338 3528 2240 4284 3024 4074 3332 3864 3290 3780 3150 3668 3192 3598 3024 3374 2870 3388 2772 3542 2800 3668 2702 3542 2590 3430 2604 3350 2600 3300 2500[[w:John the Apostle|John]]\npoly 4775 2184 4915 2128 5055 2212 5083 2352 5111 2464 5181 2604 5307 2744 5573 3052 5615 3192 5657 3290 5573 3402 5461 3332 5335 3248 4495 3248 4439 3388 4243 3388 4075 3360 4173 3136 4327 3010 4509 2730 4663 2520 4733 2394 [[w:Jesus]]\npoly 5900 2100 5900 2150 5800 2400 5800 2500 5675 2589 5480 2671 5438 2507 5425 2301 5589 2452 5630 2301 5650 2100 [[w:Thomas the Apostle|Thomas]]\npoly 5918 2150 6041 2109 6137 2246 6192 2411 6110 2589 6110 2726 6192 2822 6302 2740 6589 3109 5658 3178 5575 2918 5300 2698 5233 2589 5274 2438 5370 2507 5521 2685 5617 2671 5712 2575 5822 2507 5808 2287 5822 2175 [[w:James, son of Zebedee|James Greater]]\npoly 6137 2013 6439 2013 6863 2260 7110 2515 6726 2675 6507 2548 6425 2630 6356 2753 6548 2849 6699 2781 7082 2794 7178 3109 6699 3178 6548 2986 6397 2835 6165 2775 6110 2589 6233 2438 6302 2383 6151 2287 6096 2164 [[w:Philip the Apostle|Philip]]\npoly 7635 2123 7800 2013 8000 2055 8025 2287 7950 2438 8000 2698 8055 2918 7959 3164 7233 3164 7124 2972 7124 2794 6548 2794 6384 2781 6384 2671 6493 2575 6750 2650 7075 2550 7219 2400 7625 2300 [[w:Matthew the Apostle|Matthew]]\npoly 8325 2096 8600 2109 8635 2493 8615 2726 8439 2781 8274 2740 8125 2835 8151 2931 8400 2975 8411 3068 8589 3041 8617 3205 7987 3260 8124 3027 7987 2644 7904 2493 7959 2425 8096 2356 [[w:Judas Thaddaeus|Jude]]\npoly 8800 2150 8900 2125 9055 2150 9125 2397 9400 2475 9550 2931 9625 3301 9151 3397 8535 3219 8726 3014 8466 3068 8411 2918 8178 2931 8124 2835 8329 2753 8535 2794 8726 2603 8725 2342 [[w:Simon the Zealot|Simon]]\nrect 269 140 344 305 [[Claude Martin]]\nrect 124 147 181 298 [[Antoine Polier|Antoine-Louis Polier]]\ndesc none\n" Text + +'</' Punctuation +'imagemap' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'rss' Name.Tag +' ' Text.Whitespace +'max' Name.Attribute +'=' Operator +'4' Literal.String +' ' Text.Whitespace +'highlight' Name.Attribute +'=' Operator +'"' Literal.String.Double +'community' Literal.String.Double +' ' Literal.String.Double +'wiki' Literal.String.Double +' ' Literal.String.Double +'foundation' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'https://wikimediafoundation.org/news/feed/' Text +'</' Punctuation +'rss' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'inputbox' Name.Tag +'>' Punctuation +'\ntype=create\nbreak=no\n' Text + +'</' Punctuation +'inputbox' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'inputbox' Name.Tag +'>' Punctuation +'\ntype=\nbgcolor=\nwidth=\npage=\ndefault=\npreload=\neditintro=\nbuttonlabel=\nhidden=\nsearchbuttonlabel=\nfulltextbutton=\nlabeltext=\nbreak=\nnamespaces=\nprefix=\nplaceholder=\nminor=\nnosummary=\nsummary=\nid=\ninline=\ndir=\npreloadparams[]=\nsearchfilter=\nuseve=\narialabel=\n' Text + +'</' Punctuation +'inputbox' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'gallery' Name.Tag +'>' Punctuation +'\nFile:Example.jpg\nFile:Example.jpg\n' Text + +'</' Punctuation +'gallery' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'gallery' Name.Tag +' ' Text.Whitespace +'mode' Name.Attribute +'=' Operator +'packed' Literal.String +' ' Text.Whitespace +'heights' Name.Attribute +'=' Operator +'150px' Literal.String +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'text' Literal.String.Double +'-' Literal.String.Double +'align' Literal.String.Double +':' Literal.String.Double +'left' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'\na|1\nDetroit Publishing Co. - A Yeoman of the Guard (N.B. actually a Yeoman Warder), full restoration.jpg|A Yeoman Warder, from a Victorian-era [[photochrom]]\nOfficial_program_-_Woman_suffrage_procession_March_3,_1913_-_crop.jpg|The Official program of the 1913 Woman Suffrage Procession held in Washington, D.C.\nJoseph Ferdinand Keppler - The Pirate Publisher - Puck Magazine - Restoration by Adam Cuerden.jpg|"The Pirate Publisher", a satire of copyright infringement from the magazine \'\'[[Puck (magazine)|Puck]]\'\'.\n' Text + +'</' Punctuation +'gallery' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'gallery' Name.Tag +' ' Text.Whitespace +'caption' Name.Attribute +'=' Operator +'"' Literal.String.Double +'Sample' Literal.String.Double +' ' Literal.String.Double +'gallery' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'widths' Name.Attribute +'=' Operator +'"' Literal.String.Double +'180px' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'heights' Name.Attribute +'=' Operator +'"' Literal.String.Double +'120px' Literal.String.Double +'"' Literal.String.Double +' >' Punctuation +'\nWiki.png|Captioned\nWiki.png|alt=The Wikipedia logo|Captioned with alt text\nWiki.png|[[Help:Contents/Links|Links]] can be put in captions.\nWiki.png|Full [[MediaWiki]]<br/>[[syntax]] may now be used...\n' Text + +'</' Punctuation +'gallery' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'gallery' Name.Tag +'>' Punctuation +'\n\nDetroit Publishing Co. - A Yeoman of the Guard (N.B. actually a Yeoman Warder), full restoration.jpg|1\nOfficial_program_-_Woman_suffrage_procession_March_3,_1913_-_crop.jpg|2\nThurston, the famous magician - East Indian Rope Trick.jpg|3\nJoseph Ferdinand Keppler - The Pirate Publisher - Puck Magazine - Restoration by Adam Cuerden.jpg|4\n' Text + +'</' Punctuation +'gallery' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'charinsert' Name.Tag +'>' Punctuation +'“+” ‘+’ «+» ‹+› „+“ ‚+‘ [[+]] {{+}}' Text +'</' Punctuation +'charinsert' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'templatestyles' Name.Tag +' ' Text.Whitespace +'src' Name.Attribute +'=' Operator +'"' Literal.String.Double +'Example' Literal.String.Double +'/' Literal.String.Double +'styles' Literal.String.Double +'.' Literal.String.Double +'css' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'wrapper' Name.Attribute +'=' Operator +'"' Literal.String.Double +'div' Literal.String.Double +'.' Literal.String.Double +'example' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'/>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'DynamicPageList' Name.Tag +'>' Punctuation +'\ncategory=foo\ncount=20\nnamespace=file\naddfirstcategorydate=ymd\nimagewidth=70\ngalleryshowfilesize=yes\ngalleryshowfilename=yes\nimagesperrow=7\ngallerycaption=Galleries!\nordermethod=sortkey\norder=ascending\nmode=gallery\noffset=12\n' Text + +'</' Punctuation +'DynamicPageList' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'references' Name.Tag +' ' Text.Whitespace +'/>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'poem' Name.Tag +'>' Punctuation +'\n' Text + +'In' Text +' ' Text +'[[' Punctuation +'Wikipedia' Name.Namespace +':' Punctuation +'Xanadu' Name.Tag +'|' Punctuation +'Xanadu' Text +']]' Punctuation +' ' Text +'did' Text +' ' Text +'Kubla' Text +' ' Text +'Khan' Text +'\n' Text + +'A' Text +' ' Text +'stately' Text +' ' Text +'pleasure' Text +'-' Text +'dome' Text +' ' Text +'decree' Text +':' Text +'\n' Text + +'Where' Text +' ' Text +'Alph' Text +',' Text +' ' Text +'the' Text +' ' Text +'sacred' Text +' ' Text +'river' Text +',' Text +' ' Text +'ran' Text +'\n' Text + +'Through' Text +' ' Text +'caverns' Text +' ' Text +'measureless' Text +' ' Text +'to' Text +' ' Text +'man' Text +'\n' Text + +'Down' Text +' ' Text +'to' Text +' ' Text +'a' Text +' ' Text +'sunless' Text +' ' Text +'sea' Text +'.' Text +'\n' Text + +'\n' Text + +'So' Text +' ' Text +'twice' Text +' ' Text +'five' Text +' ' Text +'miles' Text +' ' Text +'of' Text +' ' Text +'fertile' Text +' ' Text +'ground' Text +'\n' Text + +'With' Text +' ' Text +'walls' Text +' ' Text +'and' Text +' ' Text +'towers' Text +' ' Text +'were' Text +' ' Text +'girdled' Text +' ' Text +'round' Text +':' Text +'\n' Text + +'And' Text +' ' Text +'there' Text +' ' Text +'were' Text +' ' Text +'gardens' Text +' ' Text +'bright' Text +' ' Text +'with' Text +' ' Text +'sinuous' Text +' ' Text +'rills' Text +',' Text +'\n' Text + +'Where' Text +' ' Text +'blossomed' Text +' ' Text +'many' Text +' ' Text +'an' Text +' ' Text +'incense' Text +'-' Text +'bearing' Text +' ' Text +'tree' Text +';' Text +'\n' Text + +'And' Text +' ' Text +'here' Text +' ' Text +'were' Text +' ' Text +'forests' Text +' ' Text +'ancient' Text +' ' Text +'as' Text +' ' Text +'the' Text +' ' Text +'hills' Text +',' Text +'\n' Text + +'Enfolding' Text +' ' Text +'sunny' Text +' ' Text +'spots' Text +' ' Text +'of' Text +' ' Text +'greenery' Text +'.' Text +'\n' Text + +'</' Punctuation +'poem' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'categorytree' Name.Tag +' ' Text.Whitespace +'mode' Name.Attribute +'=' Operator +'"' Literal.String.Double +'categories' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'Manual' Text +'</' Punctuation +'categorytree' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'categorytree' Name.Tag +' ' Text.Whitespace +'namespaces' Name.Attribute +'=' Operator +'"' Literal.String.Double +'Category' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'Manual' Text +'</' Punctuation +'categorytree' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'categorytree' Name.Tag +'>' Punctuation +'Manual' Text +'</' Punctuation +'categorytree' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'categorytree' Name.Tag +'>' Punctuation +"''Manual''[[a]]&" Text +'</' Punctuation +'categorytree' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'onlyinclude' Name.Tag +'>' Punctuation +'My' Text +' ' Text +'content' Text +'</' Punctuation +'onlyinclude' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'includeonly' Name.Tag +'>' Punctuation +'My' Text +' ' Text +'content' Text +'</' Punctuation +'includeonly' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'noinclude' Name.Tag +'>' Punctuation +'My' Text +' ' Text +'content' Text +'</' Punctuation +'noinclude' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'syntaxhighlight' Name.Tag +' ' Text.Whitespace +'lang' Name.Attribute +'=' Operator +'"' Literal.String.Double +'cpp' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'\n' Text.Whitespace + +'#' Comment.Preproc +'include' Comment.Preproc +' ' Text.Whitespace +'<iostream>' Comment.PreprocFile +'\n' Comment.Preproc + +'int' Keyword.Type +' ' Text.Whitespace +'m2' Name.Function +' ' Text.Whitespace +'(' Punctuation +'int' Keyword.Type +' ' Text.Whitespace +'ax' Name +',' Punctuation +' ' Text.Whitespace +'char' Keyword.Type +' ' Text.Whitespace +'*' Operator +'p_ax' Name +')' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'std' Name +':' Operator +':' Operator +'cout' Name +' ' Text.Whitespace +'<' Operator +'<' Operator +'"' Literal.String +'Hello World!' Literal.String +'"' Literal.String +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'0' Literal.Number.Integer +';' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +'</' Punctuation +'syntaxhighlight' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'source' Name.Tag +' ' Text.Whitespace +'lang' Name.Attribute +'=' Operator +'"' Literal.String.Double +'cpp' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'\n' Text.Whitespace + +'#' Comment.Preproc +'include' Comment.Preproc +' ' Text.Whitespace +'<iostream>' Comment.PreprocFile +'\n' Comment.Preproc + +'int' Keyword.Type +' ' Text.Whitespace +'m2' Name.Function +' ' Text.Whitespace +'(' Punctuation +'int' Keyword.Type +' ' Text.Whitespace +'ax' Name +',' Punctuation +' ' Text.Whitespace +'char' Keyword.Type +' ' Text.Whitespace +'*' Operator +'p_ax' Name +')' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'std' Name +':' Operator +':' Operator +'cout' Name +' ' Text.Whitespace +'<' Operator +'<' Operator +'"' Literal.String +'Hello World!' Literal.String +'"' Literal.String +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'0' Literal.Number.Integer +';' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +'</' Punctuation +'source' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'syntaxhighlight' Name.Tag +' ' Text.Whitespace +'lang' Name.Attribute +'=' Operator +'"' Literal.String.Double +'non' Literal.String.Double +'-' Literal.String.Double +'exist' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'\n#include <iostream>\nint m2 (int ax, char *p_ax) {\n std::cout <<"Hello World!";\n return 0;\n}' Text +'</' Punctuation +'syntaxhighlight' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'syntaxhighlight' Name.Tag +' ' Text.Whitespace +'lang' Name.Attribute +'=' Operator +'cpp' Literal.String +'>' Punctuation +'\n' Text.Whitespace + +'#' Comment.Preproc +'include' Comment.Preproc +' ' Text.Whitespace +'<iostream>' Comment.PreprocFile +'\n' Comment.Preproc + +'</' Punctuation +'syntaxhighlight' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'syntaxhighlight' Name.Tag +' ' Text.Whitespace +'lang' Name.Attribute +'=' Operator +'cpppp' Literal.String +' ' Text.Whitespace +'p' Name.Attribute +'>' Punctuation +'\n#include <iostream>\n' Text + +'</' Punctuation +'syntaxhighlight' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'syntaxhighlight' Name.Tag +' ' Text.Whitespace +'lang' Name.Attribute +'=' Operator +"'" Literal.String.Single +'cpp' Literal.String.Single +"'" Literal.String.Single +'>' Punctuation +'\n' Text.Whitespace + +'#' Comment.Preproc +'include' Comment.Preproc +' ' Text.Whitespace +'<iostream>' Comment.PreprocFile +'\n' Comment.Preproc + +'</' Punctuation +'syntaxhighlight' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'syntaxhighlight' Name.Tag +'>' Punctuation +'\n#include <iostream>\n' Text + +'</' Punctuation +'syntaxhighlight' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'syntaxhighlight' Name.Tag +'/>' Punctuation +'\n' Text + +'<' Punctuation +'syntaxhighlight' Name.Tag +' ' Text.Whitespace +'lang' Name.Attribute +'=' Operator +'"' Literal.String.Double +'js' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'lang' Name.Attribute +'=' Operator +"'" Literal.String.Single +'cpp' Literal.String.Single +"'" Literal.String.Single +' ' Text.Whitespace +'aalang' Name.Attribute +'=' Operator +'typescript' Literal.String +'>' Punctuation +'\n' Text.Whitespace + +'#' Comment.Preproc +'include' Comment.Preproc +' ' Text.Whitespace +'<iostream>' Comment.PreprocFile +'\n' Comment.Preproc + +'</' Punctuation +'syntaxhighlight' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'syntaxhighlight' Name.Tag +' ' Text.Whitespace +'/>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'math' Name.Tag +'>' Punctuation +'2x ' Text +'\\times' Keyword +' 4y ' Text +'\\div' Keyword +' 6z + 8 - ' Text +'\\frac' Keyword +' ' Text +'{' Name.Builtin +'y' Text +'}' Name.Builtin +'{' Name.Builtin +'z' Text +'^' Name.Builtin +'2' Text +'}' Name.Builtin +' = 0' Text +'</' Punctuation +'math' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'math' Name.Tag +'>' Punctuation +'\\sin' Keyword +' 2' Text +'\\pi' Keyword +' x + ' Text +'\\ln' Keyword +' e' Text +'</' Punctuation +'math' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'math' Name.Tag +' ' Text.Whitespace +'display' Name.Attribute +'=' Operator +'block' Literal.String +'>' Punctuation +'\\sum' Keyword +'_' Name.Builtin +'{' Name.Builtin +'n=0' Text +'}' Name.Builtin +'^' Name.Builtin +'\\infty' Keyword +' ' Text +'\\frac' Keyword +'{' Name.Builtin +'x' Text +'^' Name.Builtin +'n' Text +'}' Name.Builtin +'{' Name.Builtin +'n!' Text +'}' Name.Builtin +'</' Punctuation +'math' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'score' Name.Tag +'>' Punctuation +'\\relative' Name.Builtin.MusicFunction +' ' Text.Whitespace +"c'" Pitch +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'fis' Pitch +' ' Text.Whitespace +'d' Pitch +' ' Text.Whitespace +'fis' Pitch +' ' Text.Whitespace +'a' Pitch +' ' Text.Whitespace +'d' Pitch +' ' Text.Whitespace +'f' Pitch +' ' Text.Whitespace +'e' Pitch +' ' Text.Whitespace +'d' Pitch +' ' Text.Whitespace +'c' Pitch +' ' Text.Whitespace +'cis' Pitch +' ' Text.Whitespace +'d' Pitch +' ' Text.Whitespace +'e' Pitch +' ' Text.Whitespace +'a' Pitch +' ' Text.Whitespace +'g' Pitch +' ' Text.Whitespace +'f' Pitch +' ' Text.Whitespace +'ees' Pitch +' ' Text.Whitespace +'}' Punctuation +'</' Punctuation +'score' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'score' Name.Tag +' ' Text.Whitespace +'lang' Name.Attribute +'=' Operator +'"' Literal.String.Double +'lilypond' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'\\relative' Name.Builtin.MusicFunction +' ' Text.Whitespace +"c'" Pitch +' ' Text.Whitespace +'{' Punctuation +' ' Text.Whitespace +'fis' Pitch +' ' Text.Whitespace +'d' Pitch +' ' Text.Whitespace +'fis' Pitch +' ' Text.Whitespace +'a' Pitch +' ' Text.Whitespace +'d' Pitch +' ' Text.Whitespace +'f' Pitch +' ' Text.Whitespace +'e' Pitch +' ' Text.Whitespace +'d' Pitch +' ' Text.Whitespace +'c' Pitch +' ' Text.Whitespace +'cis' Pitch +' ' Text.Whitespace +'d' Pitch +' ' Text.Whitespace +'e' Pitch +' ' Text.Whitespace +'a' Pitch +' ' Text.Whitespace +'g' Pitch +' ' Text.Whitespace +'f' Pitch +' ' Text.Whitespace +'ees' Pitch +' ' Text.Whitespace +'}' Punctuation +'</' Punctuation +'score' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'score' Name.Tag +' ' Text.Whitespace +'lang' Name.Attribute +'=' Operator +'"' Literal.String.Double +'ABC' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +"\nX:1\nM:C\nL:1/4\nK:C\nC, D, E, F,|G, A, B, C|D E F G|A B c d|\ne f g a|b c' d' e'|f' g' a' b'|]\n" Text + +'</' Punctuation +'score' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'score' Name.Tag +' ' Text.Whitespace +'lang' Name.Attribute +'=' Operator +'not' Literal.String +'-' Literal.String +'exist' Literal.String +'>' Punctuation +"\\relative c' { fis d fis a d f e d c cis d e a g f ees }" Text +'</' Punctuation +'score' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'ref' Name.Tag +' ' Text.Whitespace +'name' Name.Attribute +'=' Operator +'"' Literal.String.Double +'reference' Literal.String.Double +' ' Literal.String.Double +'name' Literal.String.Double +'"' Literal.String.Double +'>' Punctuation +'add_template_name_here' Text +'</' Punctuation +'ref' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'templatedata' Name.Tag +'>' Punctuation +'\n' Text.Whitespace + +'{' Punctuation +'\n ' Text.Whitespace +'"description"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"Label unsigned comments in a conversation."' Literal.String.Double +',' Punctuation +'\n ' Text.Whitespace +'"params"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'"user"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'"label"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"User\'s name"' Literal.String.Double +',' Punctuation +'\n ' Text.Whitespace +'"type"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"wiki-user-name"' Literal.String.Double +',' Punctuation +'\n ' Text.Whitespace +'"required"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'true' Keyword.Constant +',' Punctuation +'\n ' Text.Whitespace +'"description"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"User name of person who forgot to sign their comment."' Literal.String.Double +',' Punctuation +'\n ' Text.Whitespace +'"aliases"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'[' Punctuation +'"1"' Literal.String.Double +']' Punctuation +'\n ' Text.Whitespace +'},' Punctuation +'\n ' Text.Whitespace +'"date"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'"label"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"Date"' Literal.String.Double +',' Punctuation +'\n ' Text.Whitespace +'"suggested"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'true' Keyword.Constant +',' Punctuation +'\n ' Text.Whitespace +'"description"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'"en"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"Timestamp of when the comment was posted, in YYYY-MM-DD format."' Literal.String.Double +'\n ' Text.Whitespace +'},' Punctuation +'\n ' Text.Whitespace +'"aliases"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'[' Punctuation +'"2"' Literal.String.Double +'],' Punctuation +'\n ' Text.Whitespace +'"autovalue"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"{{subst:#time:Y-m-d}}"' Literal.String.Double +'\n ' Text.Whitespace +'},' Punctuation +'\n ' Text.Whitespace +'"year"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'"label"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"Year"' Literal.String.Double +',' Punctuation +'\n ' Text.Whitespace +'"type"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"number"' Literal.String.Double +'\n ' Text.Whitespace +'},' Punctuation +'\n ' Text.Whitespace +'"month"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'"label"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"Month"' Literal.String.Double +',' Punctuation +'\n ' Text.Whitespace +'"inherits"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"year"' Literal.String.Double +'\n ' Text.Whitespace +'},' Punctuation +'\n ' Text.Whitespace +'"day"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'"label"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"Day"' Literal.String.Double +',' Punctuation +'\n ' Text.Whitespace +'"inherits"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"year"' Literal.String.Double +'\n ' Text.Whitespace +'},' Punctuation +'\n ' Text.Whitespace +'"comment"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'"required"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'false' Keyword.Constant +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'},' Punctuation +'\n ' Text.Whitespace +'"sets"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'[' Punctuation +'\n ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'"label"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"Date"' Literal.String.Double +',' Punctuation +'\n ' Text.Whitespace +'"params"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'[' Punctuation +'"year"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"month"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"day"' Literal.String.Double +']' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'],' Punctuation +'\n ' Text.Whitespace +'"maps"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'"ExampleConsumer"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n ' Text.Whitespace +'"foo"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'"user"' Literal.String.Double +',' Punctuation +'\n ' Text.Whitespace +'"bar"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'[' Punctuation +'"year"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"month"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"day"' Literal.String.Double +'],' Punctuation +'\n ' Text.Whitespace +'"quux"' Name.Tag +':' Punctuation +' ' Text.Whitespace +'[' Punctuation +'\n ' Text.Whitespace +'"date"' Literal.String.Double +',' Punctuation +'\n ' Text.Whitespace +'[' Punctuation +'"day"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"month"' Literal.String.Double +'],' Punctuation +'\n ' Text.Whitespace +'[' Punctuation +'"month"' Literal.String.Double +',' Punctuation +' ' Text.Whitespace +'"year"' Literal.String.Double +'],' Punctuation +'\n ' Text.Whitespace +'"year"' Literal.String.Double +'\n ' Text.Whitespace +']' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +'\n' Text.Whitespace + +'</' Punctuation +'templatedata' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'*' Keyword +' ' Text +'<' Punctuation +'translate' Name.Tag +'>' Punctuation +'This' Text +' ' Text +'is' Text +' ' Text +'a' Text +' ' Text +'long' Text +' ' Text +'list' Text +':' Text +'</' Punctuation +'translate' Name.Tag +'>' Punctuation +'\n' Text + +'**' Keyword +' ' Text +'<' Punctuation +'translate' Name.Tag +'>' Punctuation +'There' Text +' ' Text +'are' Text +' ' Text +'more' Text +' ' Text +'than' Text +' ' Text +'160' Text +' ' Text +'words' Text +' ' Text +'in' Text +' ' Text +'this' Text +' ' Text +'list' Text +',' Text +'</' Punctuation +'translate' Name.Tag +'>' Punctuation +'\n' Text + +'**' Keyword +' ' Text +'<' Punctuation +'translate' Name.Tag +'>' Punctuation +'or' Text +' ' Text +'there' Text +' ' Text +'are' Text +' ' Text +'more' Text +' ' Text +'than' Text +' ' Text +'8' Text +' ' Text +'items' Text +'.' Text +'</' Punctuation +'translate' Name.Tag +'>' Punctuation +'\n' Text + +'*' Keyword +' ' Text +'<' Punctuation +'translate' Name.Tag +'>' Punctuation +'So' Text +' ' Text +'it' Text +' ' Text +'is' Text +' ' Text +'better' Text +' ' Text +'to' Text +' ' Text +'split' Text +' ' Text +'it' Text +' ' Text +'in' Text +' ' Text +'several' Text +' ' Text +'smaller' Text +' ' Text +'units' Text +'.' Text +'</' Punctuation +'translate' Name.Tag +'>' Punctuation +'\n' Text + +'*' Keyword +' ' Text +'<' Punctuation +'translate' Name.Tag +'>' Punctuation +'But' Text +' ' Text +'we' Text +' ' Text +'must' Text +' ' Text +'exclude' Text +' ' Text +'bullet' Text +' ' Text +'points' Text +' ' Text +'from' Text +' ' Text +'translate' Text +' ' Text +'tags' Text +' ' Text +'to' Text +' ' Text +'keep' Text +' ' Text +'the' Text +' ' Text +'list' Text +' ' Text +'accessible' Text +'.' Text +'</' Punctuation +'translate' Name.Tag +'>' Punctuation +'\n' Text + +'\n' Text + +'<' Punctuation +'tvar' Name.Tag +' ' Text.Whitespace +'name' Name.Attribute +'=' Operator +'1' Literal.String +'>' Punctuation +'1' Text +'</' Punctuation +'tvar' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'span' Name.Tag +' ' Text.Whitespace +'<' Punctuation +'tvar' Name.Tag +' ' Text.Whitespace +'name' Name.Attribute +'=' Operator +'attr' Literal.String +'>' Punctuation +'class' Name.Attribute +'=' Operator +'"' Literal.String.Double +'css_class' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'background' Literal.String.Double +'-' Literal.String.Double +'color' Literal.String.Double +':' Literal.String.Double +'blue' Literal.String.Double +'"' Literal.String.Double +'</' Punctuation +'tvar' Name.Tag +'>' Punctuation +'>' Punctuation +'hello' Text +'</' Punctuation +'span' Name.Tag +'>' Punctuation +'\n' Text + +'<' Punctuation +'span' Name.Tag +' ' Text.Whitespace +'<' Punctuation +'tvar' Name.Tag +'|' Punctuation +'attr' Literal.String +'>' Punctuation +'class' Name.Attribute +'=' Operator +'"' Literal.String.Double +'css_class' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'background' Literal.String.Double +'-' Literal.String.Double +'color' Literal.String.Double +':' Literal.String.Double +'blue' Literal.String.Double +'"' Literal.String.Double +'</>' Punctuation +'>' Text +'hello' Text +'</' Punctuation +'span' Name.Tag +'>' Punctuation +'\n' Text + +'{{' Punctuation +'<' Punctuation +'tvar' Name.Tag +' ' Text.Whitespace +'name' Name.Attribute +'=' Operator +'1' Literal.String +'>' Punctuation +'center' Name.Tag +'|' Punctuation +'5px' Text +'</' Punctuation +'tvar' Name.Tag +'>' Punctuation +'|' Punctuation +'hello' Text +'}}' Punctuation +'\n' Text diff --git a/tests/snippets/wikitext/signurature.txt b/tests/snippets/wikitext/signurature.txt new file mode 100644 index 00000000..d086436a --- /dev/null +++ b/tests/snippets/wikitext/signurature.txt @@ -0,0 +1,24 @@ +---input--- +~~ +~~~ +~~~~ +~~~~~ +~~~~~~ + +---tokens--- +'~' Text +'~' Text +'\n' Text + +'~~~' Keyword +'\n' Text + +'~~~~' Keyword +'\n' Text + +'~~~~~' Keyword +'\n' Text + +'~~~~~' Keyword +'~' Text +'\n' Text diff --git a/tests/snippets/wikitext/table.txt b/tests/snippets/wikitext/table.txt new file mode 100644 index 00000000..0e6dac6d --- /dev/null +++ b/tests/snippets/wikitext/table.txt @@ -0,0 +1,2323 @@ +---input--- +{| class="wikitable" +|+ Caption text +|- +! Header texta !! Header text !! Header text +|- +| Example || Example || Example +|- +| Example || Example || Example +|- +| Example || Example || Example +|} + +{| class=wikitable style="text-align: center;" +|+ Multiplication table +|- +! × +! 1 +! 2 +! 3 +|- +! 1 +| 1 || 2 || 3 +|- +! 2 +| 2 || 4 || 6 +|- +! 3 +| 3 || 6 || 9 +|- +! 4 +| 4 || 8 || 12 +|- +! 5 +| 5 || 10 || 15 +|} + +{| class=wikitable +|+ style="text-align: left;" | Data reported for 2014–2015, by region<ref name="Garcia 2005"/> +|- +! scope=col | Year !! scope=col | Africa !! scope=col | Americas !! scope=col | Asia & Pacific !! scope=col | Europe +|- +! scope=row | 2014 +| 2,300 || 8,950 || ''9,325'' || 4,200 +|- +! scope=row | 2015 +| 2,725 || ''9,200'' || 8,850 || 4,775 +|} + +<!-- || can be used in headers as well --> +{| class="wikitable" +|+ Caption text +|- +! Header text !! Header text || Header text +|- + |} + +Text before centered table... +{| style="border: 1px solid black; border-spacing: 0; margin: 1em auto;" +|+ '''An example table''' +|- +! style="border: 1px solid black; padding: 5px; background: #efefef;" | First header +! colspan="2" style="border: 1px solid black; padding: 5px; background: #ffdead;" | Second header +|- +| style="border: 1px solid black; padding: 5px;" | Upper left +| style="border: 1px solid black; padding: 5px;" | Upper middle +| rowspan="2" style="border: 1px solid black; border-bottom: 3px solid grey; padding: 5px; vertical-align: top;" | +Right side +|- +| style="border: 1px solid black; border-bottom: 3px solid grey; padding: 5px;" | Lower left +| style="border: 1px solid black; border-bottom: 3px solid grey; padding: 5px;" | Lower middle +|- +| colspan="3" style="border: 1px solid black; text-align: center;" | +Text before a nested table... +{| +|+ ''A table in a table'' +|- +| style="text-align: center; width: 150px;" | [[File:Wiki.png]] +| style="text-align: center; width: 150px;" | [[File:Wiki.png]] +|- +| colspan="2" style="text-align:center; border-top: 1px solid red;<!-- + --> border-right: 1px solid red; border-bottom: 2px solid red;<!-- + --> border-left: 1px solid red;" | +Two Wikipedia logos +|} +...text after a nested table +|} +...text after centered table + +{| class="wikitable" +|+ a=1 | Caption text +|- a=1 b=2 +! a=1 | Header text !! b=2 | Header text !! c="sdfsd f" | Header text +|- +| Example || Example || Example +|- +| Example || Example || Example +|- +| Example || Example || Example +|} + +{| class=wikitable +|- +|class=1|P|i|p|e| +|C|e|l|l|2| +|- +|class=1|P|i|p|e||class=1|C|e|l|l|2| +|- +||P|i|p|e|s||C|e|l|l|2| +|} + +{| class=wikitable +|- +|<nowiki>|</nowiki>Pipes34:<nowiki>||</nowiki> +|- +||Pipes34:|| +|} + +{| style="border: 1px solid black;" +| style="border: 1px solid black;" | α +| style="border: 1px solid black; text-align:center;" | cell2 +{| style="border: 2px solid black; background: #ffffcc;" <!-- The nested table must be on a new line --> +| style="border: 2px solid darkgray;" | NESTED +|- +| style="border: 2px solid darkgray;" | TABLE +|} +| style="border: 1px solid black; vertical-align: bottom;" | the original table again +| style="border: 1px solid black; width:100px" | +{| style="border: 2px solid black; background: #ffffcc" +| style="border: 2px solid darkgray;" | A +|} +{| style="border: 2px solid black; background: #ffffcc" +| style="border: 2px solid darkgray;" | B +| style="border: 2px solid darkgray;" | B +|} +| style="border: 1px solid black; width: 50px" | +{| style="border: 2px solid black; background:#ffffcc; float:left" +| style="border: 2px solid darkgray;" | C +|} +{| style="border: 2px solid black; background:#ffffcc; float:right" +| style="border: 2px solid darkgray;" | D +|} +|} + +{| style="border-spacing: 2px; border: 1px solid darkgray;" +! style="width: 140px;" | Left +! style="width: 150px;" | Center +! style="width: 130px;" | Right +|- style="text-align: center;" +| style="border: 1px solid blue;"| +[[File:StarIconBronze.png|120px|Bronze star icon]] +| style="border: 1px solid #777777;"| +[[File:StarIconGold.png|120px|Gold star icon]] +| style="border: 1px solid #22AA55;"|<!-- greenish border --> +[[File:StarIconGreen.png|120px|Green star icon]] +|- style="text-align: center;" +|Bronze star || Gold star || Green star +|} + +{| class=wikitable + <!-- + Row one is shown because the '1' evaluates + to TRUE. + --> + {{ #if:1|{{!}}- + ! scope=row {{!}} row one, column one + <!-- + Any {{!}}'s are evaluated to the pipe + character '|' since the template '!' just + contains '|'. + --> + {{!}}row one, column two}} + <!-- + Row two is NOT shown because the space + between the ':' and the '|' evaluates to FALSE. + --> + {{ #if: |{{!}}- + ! scope=row {{!}} row two, column one + {{!}}row two, column two}} + <!-- + Row three is shown. + --> + |- + ! scope=row {{!}} row three, column one + | row three, column two +|} + +---tokens--- +'{|' Punctuation +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'"' Literal.String.Double +'wikitable' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|+' Punctuation +' Caption text' Generic.Heading +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Generic.Subheading +'Header' Generic.Subheading +' ' Generic.Subheading +'texta' Generic.Subheading +' ' Generic.Subheading +'!!' Punctuation +' ' Generic.Subheading +'Header' Generic.Subheading +' ' Generic.Subheading +'text' Generic.Subheading +' ' Generic.Subheading +'!!' Punctuation +' ' Generic.Subheading +'Header' Generic.Subheading +' ' Generic.Subheading +'text' Generic.Subheading +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'\n' Text.Whitespace + +'{|' Punctuation +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'wikitable' Literal.String +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'text' Literal.String.Double +'-' Literal.String.Double +'align' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'center' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|+' Punctuation +' Multiplication table' Generic.Heading +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Generic.Subheading +'×' Generic.Subheading +'\n' Text + +'!' Punctuation +' ' Generic.Subheading +'1' Generic.Subheading +'\n' Text + +'!' Punctuation +' ' Generic.Subheading +'2' Generic.Subheading +'\n' Text + +'!' Punctuation +' ' Generic.Subheading +'3' Generic.Subheading +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Generic.Subheading +'1' Generic.Subheading +'\n' Text + +'|' Punctuation +' ' Text +'1' Text +' ' Text +'||' Punctuation +' ' Text +'2' Text +' ' Text +'||' Punctuation +' ' Text +'3' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Generic.Subheading +'2' Generic.Subheading +'\n' Text + +'|' Punctuation +' ' Text +'2' Text +' ' Text +'||' Punctuation +' ' Text +'4' Text +' ' Text +'||' Punctuation +' ' Text +'6' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Generic.Subheading +'3' Generic.Subheading +'\n' Text + +'|' Punctuation +' ' Text +'3' Text +' ' Text +'||' Punctuation +' ' Text +'6' Text +' ' Text +'||' Punctuation +' ' Text +'9' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Generic.Subheading +'4' Generic.Subheading +'\n' Text + +'|' Punctuation +' ' Text +'4' Text +' ' Text +'||' Punctuation +' ' Text +'8' Text +' ' Text +'||' Punctuation +' ' Text +'12' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Generic.Subheading +'5' Generic.Subheading +'\n' Text + +'|' Punctuation +' ' Text +'5' Text +' ' Text +'||' Punctuation +' ' Text +'10' Text +' ' Text +'||' Punctuation +' ' Text +'15' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'\n' Text.Whitespace + +'{|' Punctuation +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'wikitable' Literal.String +'\n' Text + +'|+' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'text' Literal.String.Double +'-' Literal.String.Double +'align' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'left' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' Data reported for 2014–2015, by region<ref name="Garcia 2005"/>' Generic.Heading +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Text.Whitespace +'scope' Name.Attribute +'=' Operator +'col' Literal.String +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Year' Generic.Subheading +' ' Generic.Subheading +'!!' Punctuation +' ' Text.Whitespace +'scope' Name.Attribute +'=' Operator +'col' Literal.String +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Africa' Generic.Subheading +' ' Generic.Subheading +'!!' Punctuation +' ' Text.Whitespace +'scope' Name.Attribute +'=' Operator +'col' Literal.String +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Americas' Generic.Subheading +' ' Generic.Subheading +'!!' Punctuation +' ' Text.Whitespace +'scope' Name.Attribute +'=' Operator +'col' Literal.String +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Asia' Generic.Subheading +' ' Generic.Subheading +'&' Generic.Subheading +' ' Generic.Subheading +'Pacific' Generic.Subheading +' ' Generic.Subheading +'!!' Punctuation +' ' Text.Whitespace +'scope' Name.Attribute +'=' Operator +'col' Literal.String +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Europe' Generic.Subheading +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Text.Whitespace +'scope' Name.Attribute +'=' Operator +'row' Literal.String +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'2014' Generic.Subheading +'\n' Text + +'|' Punctuation +' ' Text +'2' Text +',' Text +'300' Text +' ' Text +'||' Punctuation +' ' Text +'8' Text +',' Text +'950' Text +' ' Text +'||' Punctuation +' ' Text +"''" Generic.Emph +'9' Generic.Emph +',' Generic.Emph +'325' Generic.Emph +"''" Generic.Emph +' ' Text +'||' Punctuation +' ' Text +'4' Text +',' Text +'200' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Text.Whitespace +'scope' Name.Attribute +'=' Operator +'row' Literal.String +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'2015' Generic.Subheading +'\n' Text + +'|' Punctuation +' ' Text +'2' Text +',' Text +'725' Text +' ' Text +'||' Punctuation +' ' Text +"''" Generic.Emph +'9' Generic.Emph +',' Generic.Emph +'200' Generic.Emph +"''" Generic.Emph +' ' Text +'||' Punctuation +' ' Text +'8' Text +',' Text +'850' Text +' ' Text +'||' Punctuation +' ' Text +'4' Text +',' Text +'775' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'\n' Text + +'<!-- || can be used in headers as well -->' Comment.Multiline +'\n' Text + +'{|' Punctuation +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'"' Literal.String.Double +'wikitable' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|+' Punctuation +' Caption text' Generic.Heading +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Generic.Subheading +'Header' Generic.Subheading +' ' Generic.Subheading +'text' Generic.Subheading +' ' Generic.Subheading +'!!' Punctuation +' ' Generic.Subheading +'Header' Generic.Subheading +' ' Generic.Subheading +'text' Generic.Subheading +' ' Generic.Subheading +'||' Punctuation +' ' Generic.Subheading +'Header' Generic.Subheading +' ' Generic.Subheading +'text' Generic.Subheading +'\n' Text + +'|-' Punctuation +'\n' Text + +' ' Text.Whitespace +'|}' Punctuation +'\n' Text + +'\n' Text + +'Text' Text +' ' Text +'before' Text +' ' Text +'centered' Text +' ' Text +'table' Text +'.' Text +'.' Text +'.' Text +'\n' Text + +'{|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'border' Literal.String.Double +'-' Literal.String.Double +'spacing' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'0' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'margin' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1em' Literal.String.Double +' ' Literal.String.Double +'auto' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|+' Punctuation +" '''An example table'''" Generic.Heading +'\n' Text + +'|-' Punctuation +'\n' Text + +'!' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'padding' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'5px' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'background' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'#' Literal.String.Double +'efefef' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'First' Generic.Subheading +' ' Generic.Subheading +'header' Generic.Subheading +'\n' Text + +'!' Punctuation +' ' Text.Whitespace +'colspan' Name.Attribute +'=' Operator +'"' Literal.String.Double +'2' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'padding' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'5px' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'background' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'#' Literal.String.Double +'ffdead' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Second' Generic.Subheading +' ' Generic.Subheading +'header' Generic.Subheading +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'padding' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'5px' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'Upper' Text +' ' Text +'left' Text +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'padding' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'5px' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'Upper' Text +' ' Text +'middle' Text +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'rowspan' Name.Attribute +'=' Operator +'"' Literal.String.Double +'2' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'border' Literal.String.Double +'-' Literal.String.Double +'bottom' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'3px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'grey' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'padding' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'5px' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'vertical' Literal.String.Double +'-' Literal.String.Double +'align' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'top' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +'\n' Text + +'Right' Text +' ' Text +'side' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'border' Literal.String.Double +'-' Literal.String.Double +'bottom' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'3px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'grey' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'padding' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'5px' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'Lower' Text +' ' Text +'left' Text +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'border' Literal.String.Double +'-' Literal.String.Double +'bottom' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'3px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'grey' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'padding' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'5px' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'Lower' Text +' ' Text +'middle' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'colspan' Name.Attribute +'=' Operator +'"' Literal.String.Double +'3' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'text' Literal.String.Double +'-' Literal.String.Double +'align' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'center' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +'\n' Text + +'Text' Text +' ' Text +'before' Text +' ' Text +'a' Text +' ' Text +'nested' Text +' ' Text +'table' Text +'.' Text +'.' Text +'.' Text +'\n' Text + +'{|' Punctuation +'\n' Text + +'|+' Punctuation +" ''A table in a table''" Generic.Heading +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'text' Literal.String.Double +'-' Literal.String.Double +'align' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'center' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'width' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'150px' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'Wiki.png' Name.Tag +']]' Punctuation +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'text' Literal.String.Double +'-' Literal.String.Double +'align' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'center' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'width' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'150px' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'Wiki.png' Name.Tag +']]' Punctuation +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text +'colspan' Text +'=' Text +'"' Text +'2' Text +'"' Text +' ' Text +'style' Text +'=' Text +'"' Text +'text' Text +'-' Text +'align' Text +':' Text +'center' Text +';' Text +' ' Text +'border' Text +'-' Text +'top' Text +':' Text +' ' Text +'1px' Text +' ' Text +'solid' Text +' ' Text +'red' Text +';' Text +'<!--\n -->' Comment.Multiline +' ' Text +'border' Text +'-' Text +'right' Text +':' Text +' ' Text +'1px' Text +' ' Text +'solid' Text +' ' Text +'red' Text +';' Text +' ' Text +'border' Text +'-' Text +'bottom' Text +':' Text +' ' Text +'2px' Text +' ' Text +'solid' Text +' ' Text +'red' Text +';' Text +'<!--\n -->' Comment.Multiline +' ' Text +'border' Text +'-' Text +'left' Text +':' Text +' ' Text +'1px' Text +' ' Text +'solid' Text +' ' Text +'red' Text +';' Text +'"' Text +' ' Text +'|' Text +'\n' Text + +'Two' Text +' ' Text +'Wikipedia' Text +' ' Text +'logos' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'.' Text +'.' Text +'.' Text +'text' Text +' ' Text +'after' Text +' ' Text +'a' Text +' ' Text +'nested' Text +' ' Text +'table' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'.' Text +'.' Text +'.' Text +'text' Text +' ' Text +'after' Text +' ' Text +'centered' Text +' ' Text +'table' Text +'\n' Text + +'\n' Text.Whitespace + +'{|' Punctuation +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'"' Literal.String.Double +'wikitable' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|+' Punctuation +' ' Text.Whitespace +'a' Name.Attribute +'=' Operator +'1' Literal.String +' ' Text.Whitespace +'|' Punctuation +' Caption text' Generic.Heading +'\n' Text + +'|-' Punctuation +' ' Text.Whitespace +'a' Name.Attribute +'=' Operator +'1' Literal.String +' ' Text.Whitespace +'b' Name.Attribute +'=' Operator +'2' Literal.String +'\n' Text + +'!' Punctuation +' ' Text.Whitespace +'a' Name.Attribute +'=' Operator +'1' Literal.String +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Header' Generic.Subheading +' ' Generic.Subheading +'text' Generic.Subheading +' ' Generic.Subheading +'!!' Punctuation +' ' Text.Whitespace +'b' Name.Attribute +'=' Operator +'2' Literal.String +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Header' Generic.Subheading +' ' Generic.Subheading +'text' Generic.Subheading +' ' Generic.Subheading +'!!' Punctuation +' ' Text.Whitespace +'c' Name.Attribute +'=' Operator +'"' Literal.String.Double +'sdfsd' Literal.String.Double +' ' Literal.String.Double +'f' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Header' Generic.Subheading +' ' Generic.Subheading +'text' Generic.Subheading +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +' ' Text +'||' Punctuation +' ' Text +'Example' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'\n' Text.Whitespace + +'{|' Punctuation +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'wikitable' Literal.String +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +'class' Name.Attribute +'=' Operator +'1' Literal.String +'|' Punctuation +'P' Text +'|' Text +'i' Text +'|' Text +'p' Text +'|' Text +'e' Text +'|' Text +'\n' Text + +'|' Punctuation +'C' Name.Attribute +'|' Punctuation +'e' Text +'|' Text +'l' Text +'|' Text +'l' Text +'|' Text +'2' Text +'|' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +'class' Name.Attribute +'=' Operator +'1' Literal.String +'|' Punctuation +'P' Text +'|' Text +'i' Text +'|' Text +'p' Text +'|' Text +'e' Text +'||' Punctuation +'class' Name.Attribute +'=' Operator +'1' Literal.String +'|' Punctuation +'C' Text +'|' Text +'e' Text +'|' Text +'l' Text +'|' Text +'l' Text +'|' Text +'2' Text +'|' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +'|' Punctuation +'P' Text +'|' Text +'i' Text +'|' Text +'p' Text +'|' Text +'e' Text +'|' Text +'s' Text +'||' Punctuation +'C' Name.Attribute +'|' Punctuation +'e' Text +'|' Text +'l' Text +'|' Text +'l' Text +'|' Text +'2' Text +'|' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'\n' Text.Whitespace + +'{|' Punctuation +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'wikitable' Literal.String +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +'<' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'|' Text +'</' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'Pipes34' Text +':' Text +'<' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'|' Text +'|' Text +'</' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +'|' Name.Entity +'Pipes34' Text +':' Text +'|' Name.Entity +'|' Name.Entity +'\n' Text + +'|}' Punctuation +'\n' Text + +'\n' Text.Whitespace + +'{|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'α' Name.Entity +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'text' Literal.String.Double +'-' Literal.String.Double +'align' Literal.String.Double +':' Literal.String.Double +'center' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'cell2' Text +'\n' Text + +'{|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'background' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'#' Literal.String.Double +'ffffcc' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'<!-- The nested table must be on a new line -->' Comment.Multiline +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'darkgray' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'NESTED' Text +'\n' Text + +'|-' Punctuation +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'darkgray' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'TABLE' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'vertical' Literal.String.Double +'-' Literal.String.Double +'align' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'bottom' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'the' Text +' ' Text +'original' Text +' ' Text +'table' Text +' ' Text +'again' Text +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'width' Literal.String.Double +':' Literal.String.Double +'100px' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +'\n' Text + +'{|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'background' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'#' Literal.String.Double +'ffffcc' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'darkgray' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'A' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'{|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'background' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'#' Literal.String.Double +'ffffcc' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'darkgray' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'B' Text +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'darkgray' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'B' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'width' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'50px' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +'\n' Text + +'{|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'background' Literal.String.Double +':' Literal.String.Double +'#' Literal.String.Double +'ffffcc' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'float' Literal.String.Double +':' Literal.String.Double +'left' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'darkgray' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'C' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'{|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'black' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'background' Literal.String.Double +':' Literal.String.Double +'#' Literal.String.Double +'ffffcc' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'float' Literal.String.Double +':' Literal.String.Double +'right' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'darkgray' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Text +'D' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'|}' Punctuation +'\n' Text + +'\n' Text.Whitespace + +'{|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +'-' Literal.String.Double +'spacing' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'2px' Literal.String.Double +';' Literal.String.Double +' ' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'darkgray' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'!' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'width' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'140px' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Left' Generic.Subheading +'\n' Text + +'!' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'width' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'150px' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Center' Generic.Subheading +'\n' Text + +'!' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'width' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'130px' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +' ' Text.Whitespace +'|' Punctuation +' ' Generic.Subheading +'Right' Generic.Subheading +'\n' Text + +'|-' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'text' Literal.String.Double +'-' Literal.String.Double +'align' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'center' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'blue' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'|' Punctuation +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'StarIconBronze.png' Name.Tag +'|' Punctuation +'120px' Text +'|' Punctuation +'Bronze' Text +' ' Text +'star' Text +' ' Text +'icon' Text +']]' Punctuation +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'#' Literal.String.Double +'777777' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'|' Punctuation +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'StarIconGold.png' Name.Tag +'|' Punctuation +'120px' Text +'|' Punctuation +'Gold' Text +' ' Text +'star' Text +' ' Text +'icon' Text +']]' Punctuation +'\n' Text + +'|' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'border' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'1px' Literal.String.Double +' ' Literal.String.Double +'solid' Literal.String.Double +' ' Literal.String.Double +'#' Literal.String.Double +'22AA55' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'|' Punctuation +'<!-- greenish border -->' Comment.Multiline +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'StarIconGreen.png' Name.Tag +'|' Punctuation +'120px' Text +'|' Punctuation +'Green' Text +' ' Text +'star' Text +' ' Text +'icon' Text +']]' Punctuation +'\n' Text + +'|-' Punctuation +' ' Text.Whitespace +'style' Name.Attribute +'=' Operator +'"' Literal.String.Double +'text' Literal.String.Double +'-' Literal.String.Double +'align' Literal.String.Double +':' Literal.String.Double +' ' Literal.String.Double +'center' Literal.String.Double +';' Literal.String.Double +'"' Literal.String.Double +'\n' Text + +'|' Punctuation +'Bronze' Text +' ' Text +'star' Text +' ' Text +'||' Punctuation +' ' Text +'Gold' Text +' ' Text +'star' Text +' ' Text +'||' Punctuation +' ' Text +'Green' Text +' ' Text +'star' Text +'\n' Text + +'|}' Punctuation +'\n' Text + +'\n' Text.Whitespace + +'{|' Punctuation +' ' Text.Whitespace +'class' Name.Attribute +'=' Operator +'wikitable' Literal.String +'\n' Text + +' ' Text +"<!--\n Row one is shown because the '1' evaluates\n to TRUE.\n -->" Comment.Multiline +'\n' Text + +' ' Text +'{{' Punctuation +' ' Text.Whitespace +'#if' Name.Function +':' Punctuation +'1' Text +'|' Punctuation +'{{' Punctuation +'!' Name.Function +'}}' Punctuation +'-' Text +'\n' Text + +' ' Text +'!' Text +' ' Text +'scope' Text +'=' Text +'row' Text +' ' Text +'{{' Punctuation +'!' Name.Function +'}}' Punctuation +' ' Text +'row' Text +' ' Text +'one' Text +',' Text +' ' Text +'column' Text +' ' Text +'one' Text +'\n' Text + +' ' Text +"<!--\n Any {{!}}'s are evaluated to the pipe\n character '|' since the template '!' just\n contains '|'.\n -->" Comment.Multiline +'\n' Text + +' ' Text +'{{' Punctuation +'!' Name.Function +'}}' Punctuation +'row' Text +' ' Text +'one' Text +',' Text +' ' Text +'column' Text +' ' Text +'two' Text +'}}' Punctuation +'\n' Text + +' ' Text +"<!--\n Row two is NOT shown because the space\n between the ':' and the '|' evaluates to FALSE.\n -->" Comment.Multiline +'\n' Text + +' ' Text +'{{' Punctuation +' ' Text.Whitespace +'#if' Name.Function +':' Punctuation +' ' Text +'|' Punctuation +'{{' Punctuation +'!' Name.Function +'}}' Punctuation +'-' Text +'\n' Text + +' ' Text +'!' Text +' ' Text +'scope' Text +'=' Text +'row' Text +' ' Text +'{{' Punctuation +'!' Name.Function +'}}' Punctuation +' ' Text +'row' Text +' ' Text +'two' Text +',' Text +' ' Text +'column' Text +' ' Text +'one' Text +'\n' Text + +' ' Text +'{{' Punctuation +'!' Name.Function +'}}' Punctuation +'row' Text +' ' Text +'two' Text +',' Text +' ' Text +'column' Text +' ' Text +'two' Text +'}}' Punctuation +'\n' Text + +' ' Text +'<!--\n Row three is shown.\n -->' Comment.Multiline +'\n' Text + +' ' Text.Whitespace +'|-' Punctuation +'\n' Text + +' !' Punctuation +' ' Generic.Subheading +'scope' Generic.Subheading +'=' Generic.Subheading +'row' Generic.Subheading +' ' Generic.Subheading +'{' Generic.Subheading +'{' Generic.Subheading +'!' Generic.Subheading +'}' Generic.Subheading +'}' Generic.Subheading +' ' Generic.Subheading +'row' Generic.Subheading +' ' Generic.Subheading +'three' Generic.Subheading +',' Generic.Subheading +' ' Generic.Subheading +'column' Generic.Subheading +' ' Generic.Subheading +'one' Generic.Subheading +'\n' Text + +' |' Punctuation +' ' Text +'row' Text +' ' Text +'three' Text +',' Text +' ' Text +'column' Text +' ' Text +'two' Text +'\n' Text + +'|}' Punctuation +'\n' Text diff --git a/tests/snippets/wikitext/template.txt b/tests/snippets/wikitext/template.txt new file mode 100644 index 00000000..050011a9 --- /dev/null +++ b/tests/snippets/wikitext/template.txt @@ -0,0 +1,617 @@ +---input--- +{{payoff matrix | UL = 5 | UR = 7 | DL = 2 | DR = 9 | Name = Example usage }} +{{payoff matrix +| UL = 5 +| UR = 7 +| DL = 2 +| DR = 9 +| Name = Example usage +}} + +{{Wikipedia:foo|1=1}} +{{Wikipe{{void}}dia:foo|1=1}} +{{:foo|1=1}} + +{{short description|Wikipedia help page}} +{{pp-move-indef|small=yes}} +{{pp-vandalism|small=yes}} +{{for|the '''encyclopedic''' section on wikitext|Wiki#Editing}} +{{redirect|H:WT|the welcoming templates|Wikipedia:Welcoming committee/Welcome templates}} +{{Locutions pages header}} +{{Wikipedia how to|H:WT|H:MARKUP|H:WIKICODE}} +{{Wikitext navbox}} + +{{Template|1={{{1}}}}} + +{{vo{{void|void}}id|param1=1|par{{void}}am2=2}} + +{{math|2''x'' × 4''y'' ÷ 6''z'' + 8 − {{sfrac|''y''|''z''<sup>2</sup>}} {{=}} 0}} + +{{math|sin 2π''x'' + ln ''e''}} +It follows that {{math|''x''<sup>2</sup> ≥ 0}} for real {{mvar|x}}. + +{{Help:Transclusion demo}} + +{{Tooltip|Hover your mouse over this text +|This is the hover text}} + +Go to this page to see the Tooltip +template itself: {{tl|Tooltip}} + +This is how to {{Font color||yellow|highlight part of a sentence}}. + +{{msg:xyz}} +{{raw:xyz}} +{{msgnw:xyz}} +{{subst:xyz}} +{{safesubst:xyz}} + +{{{1}}} +{{{IncludedWorkURL|}}} +{{{Citation class|{{{Citation type|}}}}}} + +---tokens--- +'{{' Punctuation +'payoff' Name.Tag +' ' Name.Tag +'matrix' Name.Tag +' ' Text +'|' Punctuation +' UL ' Name.Label +'=' Operator +' ' Text +'5' Text +' ' Text +'|' Punctuation +' UR ' Name.Label +'=' Operator +' ' Text +'7' Text +' ' Text +'|' Punctuation +' DL ' Name.Label +'=' Operator +' ' Text +'2' Text +' ' Text +'|' Punctuation +' DR ' Name.Label +'=' Operator +' ' Text +'9' Text +' ' Text +'|' Punctuation +' Name ' Name.Label +'=' Operator +' ' Text +'Example' Text +' ' Text +'usage' Text +' ' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'payoff' Name.Tag +' ' Name.Tag +'matrix' Name.Tag +'\n' Text + +'|' Punctuation +' UL ' Name.Label +'=' Operator +' ' Text +'5' Text +'\n' Text + +'|' Punctuation +' UR ' Name.Label +'=' Operator +' ' Text +'7' Text +'\n' Text + +'|' Punctuation +' DL ' Name.Label +'=' Operator +' ' Text +'2' Text +'\n' Text + +'|' Punctuation +' DR ' Name.Label +'=' Operator +' ' Text +'9' Text +'\n' Text + +'|' Punctuation +' Name ' Name.Label +'=' Operator +' ' Text +'Example' Text +' ' Text +'usage' Text +'\n' Text + +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'Wikipedia' Name.Namespace +':' Punctuation +'foo' Name.Tag +'|' Punctuation +'1' Name.Label +'=' Operator +'1' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'Wikipe' Name.Tag +'{{' Punctuation +'void' Name.Tag +'}}' Punctuation +'dia' Name.Tag +':' Name.Tag +'foo' Name.Tag +'|' Punctuation +'1' Name.Label +'=' Operator +'1' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +':' Punctuation +'foo' Name.Tag +'|' Punctuation +'1' Name.Label +'=' Operator +'1' Text +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'short' Name.Tag +' ' Name.Tag +'description' Name.Tag +'|' Punctuation +'Wikipedia' Text +' ' Text +'help' Text +' ' Text +'page' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'pp' Name.Tag +'-' Name.Tag +'move' Name.Tag +'-' Name.Tag +'indef' Name.Tag +'|' Punctuation +'small' Name.Label +'=' Operator +'yes' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'pp' Name.Tag +'-' Name.Tag +'vandalism' Name.Tag +'|' Punctuation +'small' Name.Label +'=' Operator +'yes' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'for' Name.Tag +'|' Punctuation +'the' Text +' ' Text +"'''" Generic.Strong +'encyclopedic' Generic.Strong +"'''" Generic.Strong +' ' Text +'section' Text +' ' Text +'on' Text +' ' Text +'wikitext' Text +'|' Punctuation +'Wiki' Text +'#' Text +'Editing' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'redirect' Name.Tag +'|' Punctuation +'H' Text +':' Text +'WT' Text +'|' Punctuation +'the' Text +' ' Text +'welcoming' Text +' ' Text +'templates' Text +'|' Punctuation +'Wikipedia' Text +':' Text +'Welcoming' Text +' ' Text +'committee' Text +'/' Text +'Welcome' Text +' ' Text +'templates' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'Locutions' Name.Tag +' ' Name.Tag +'pages' Name.Tag +' ' Name.Tag +'header' Name.Tag +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'Wikipedia' Name.Tag +' ' Name.Tag +'how' Name.Tag +' ' Name.Tag +'to' Name.Tag +'|' Punctuation +'H' Text +':' Text +'WT' Text +'|' Punctuation +'H' Text +':' Text +'MARKUP' Text +'|' Punctuation +'H' Text +':' Text +'WIKICODE' Text +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'Wikitext' Name.Tag +' ' Name.Tag +'navbox' Name.Tag +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'Template' Name.Tag +'|' Punctuation +'1' Name.Label +'=' Operator +'{{{' Punctuation +'1' Name.Variable +'}}}' Punctuation +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'vo' Name.Tag +'{{' Punctuation +'void' Name.Tag +'|' Punctuation +'void' Text +'}}' Punctuation +'id' Name.Tag +'|' Punctuation +'param1' Name.Label +'=' Operator +'1' Text +'|' Punctuation +'par' Text +'{{' Punctuation +'void' Name.Tag +'}}' Punctuation +'am2' Text +'=' Text +'2' Text +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'math' Name.Tag +'|' Punctuation +'2' Text +"''" Generic.Emph +'x' Generic.Emph +"''" Generic.Emph +' ' Text +'×' Name.Entity +' ' Text +'4' Text +"''" Generic.Emph +'y' Generic.Emph +"''" Generic.Emph +' ' Text +'÷' Name.Entity +' ' Text +'6' Text +"''" Generic.Emph +'z' Generic.Emph +"''" Generic.Emph +' ' Text +'+' Text +' ' Text +'8' Text +' ' Text +'−' Name.Entity +' ' Text +'{{' Punctuation +'sfrac' Name.Tag +'|' Punctuation +"''" Generic.Emph +'y' Generic.Emph +"''" Generic.Emph +'|' Punctuation +"''" Generic.Emph +'z' Generic.Emph +"''" Generic.Emph +'<' Punctuation +'sup' Name.Tag +'>' Punctuation +'2' Text +'</' Punctuation +'sup' Name.Tag +'>' Punctuation +'}}' Punctuation +' ' Text +'{{' Punctuation +'=' Name.Function +'}}' Punctuation +' ' Text +'0' Text +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'math' Name.Tag +'|' Punctuation +'sin' Text +' ' Text +'2' Text +'π' Name.Entity +"''" Generic.Emph +'x' Generic.Emph +"''" Generic.Emph +' ' Text +'+' Text +' ' Text +'ln' Text +' ' Text +"''" Generic.Emph +'e' Generic.Emph +"''" Generic.Emph +'}}' Punctuation +'\n' Text + +'It' Text +' ' Text +'follows' Text +' ' Text +'that' Text +' ' Text +'{{' Punctuation +'math' Name.Tag +'|' Punctuation +"''" Generic.Emph +'x' Generic.Emph +"''" Generic.Emph +'<' Punctuation +'sup' Name.Tag +'>' Punctuation +'2' Text +'</' Punctuation +'sup' Name.Tag +'>' Punctuation +' ' Text +'≥' Name.Entity +' ' Text +'0' Text +'}}' Punctuation +' ' Text +'for' Text +' ' Text +'real' Text +' ' Text +'{{' Punctuation +'mvar' Name.Tag +'|' Punctuation +'x' Text +'}}' Punctuation +'.' Text +'\n' Text + +'\n' Text + +'{{' Punctuation +'Help' Name.Namespace +':' Punctuation +'Transclusion' Name.Tag +' ' Name.Tag +'demo' Name.Tag +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{' Punctuation +'Tooltip' Name.Tag +'|' Punctuation +'Hover' Text +' ' Text +'your' Text +' ' Text +'mouse' Text +' ' Text +'over' Text +' ' Text +'this' Text +' ' Text +'text' Text +'\n' Text + +'|' Punctuation +'This' Text +' ' Text +'is' Text +' ' Text +'the' Text +' ' Text +'hover' Text +' ' Text +'text' Text +'}}' Punctuation +'\n' Text + +'\n' Text + +'Go' Text +' ' Text +'to' Text +' ' Text +'this' Text +' ' Text +'page' Text +' ' Text +'to' Text +' ' Text +'see' Text +' ' Text +'the' Text +' ' Text +'Tooltip' Text +'\n' Text + +'template' Text +' ' Text +'itself' Text +':' Text +' ' Text +'{{' Punctuation +'tl' Name.Tag +'|' Punctuation +'Tooltip' Text +'}}' Punctuation +'\n' Text + +'\n' Text + +'This' Text +' ' Text +'is' Text +' ' Text +'how' Text +' ' Text +'to' Text +' ' Text +'{{' Punctuation +'Font' Name.Tag +' ' Name.Tag +'color' Name.Tag +'|' Punctuation +'|' Punctuation +'yellow' Text +'|' Punctuation +'highlight' Text +' ' Text +'part' Text +' ' Text +'of' Text +' ' Text +'a' Text +' ' Text +'sentence' Text +'}}' Punctuation +'.' Text +'\n' Text + +'\n' Text + +'{{' Punctuation +'msg' Name.Namespace +':' Punctuation +'xyz' Name.Tag +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'raw' Name.Namespace +':' Punctuation +'xyz' Name.Tag +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'msgnw' Name.Namespace +':' Punctuation +'xyz' Name.Tag +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'subst' Name.Namespace +':' Punctuation +'xyz' Name.Tag +'}}' Punctuation +'\n' Text + +'{{' Punctuation +'safesubst' Name.Namespace +':' Punctuation +'xyz' Name.Tag +'}}' Punctuation +'\n' Text + +'\n' Text + +'{{{' Punctuation +'1' Name.Variable +'}}}' Punctuation +'\n' Text + +'{{{' Punctuation +'IncludedWorkURL' Name.Variable +'|' Punctuation +'}}}' Punctuation +'\n' Text + +'{{{' Punctuation +'Citation class' Name.Variable +'|' Punctuation +'{{{' Punctuation +'Citation type' Name.Variable +'|' Punctuation +'}}}' Punctuation +'}}}' Punctuation +'\n' Text diff --git a/tests/snippets/wikitext/wikilink.txt b/tests/snippets/wikitext/wikilink.txt new file mode 100644 index 00000000..c3720161 --- /dev/null +++ b/tests/snippets/wikitext/wikilink.txt @@ -0,0 +1,772 @@ +---input--- +[[a| +b''b'' +]] + +[[维基百科:关于|关于]] + +[[Edge case#]] + +[[Edge case#|another]] + +[[ pagename | https://www.example.com ]] + +[[| this is legal! ]] + +[[ | this is illegal! ]] + +[[public transport#sth]] + +[[:public transport#sth]] + +[[:public transport]] + +[[a:public transport]] + +[[a:public transport#sth]] + +[[a:public transport#sth|<code>a</code> b ''c'' '''d''' ~~~~ <nowiki>[[a]]</nowiki>]] + +London has [[public transport]]. + +Link to this page: "[[Help:Wikitext]]" will appear only as bold text. + +New York also has [[public transport|public transportation]]. + +[[kingdom (biology)|]] + +[[Seattle, Washington|]] + +[[Wikipedia:Manual of Style#Links|]] + +[[:Category:Character sets|]] + +[[commons:category:Wikimedia]] + +[[Wiktionary:fr:bonjour]] + +[[Wiktionary:fr:bonjour|]] + +[[Wiktionary:fr:bonjour|bonjour]] + +[[ wp:pagename | page name[[ wp:pagename | page name ]] [[ wp:pagename | page name ]] [[ wp:pagename[[ wp:pagename | page name ]] | page name ]] [[ wp:pagename | page nam[[ wp:pagename | page name ]]e ]]]] + +[[ wp:pagename | page name ]] + +[<nowiki />[ wp:pagename | page name ]] + +[[<nowiki /> wp:pagename | page name ]] + +[[ wp:pagename <nowiki />| page name ]] + +[[ wp:pagename | page name ]<nowiki />] + +[[a|]]]] + +[[foo|[https://example.com]]] + +[[a|[[]]]] + +[[Hindenburg disaster|''Hindenburg'' disaster]] + +[[Special:Diff/330349143/330350877|Diff between revisions 330349143 and 330350877]] + +[[Special:Diff/330350877|Diff between revisions 330349143 and 330350877]] + +[[Special:Permalink/330350877|Revision 330350877]] + +[[Special:Contributions/2001:0db8:0000:0000:0000:ff00:0042:8329]] + +[[Special:Contributions/UserName]] + +[[File:wiki.png|thumb|left|alt={{User sandbox notice}}|Wikipedia ''logo'']] + +[[A|[//example.com a b c]]] + +---tokens--- +'[[' Punctuation +'a' Name.Tag +'|' Punctuation +'\n' Text + +'b' Text +"''" Generic.Emph +'b' Generic.Emph +"''" Generic.Emph +'\n' Text + +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'维基百科' Name.Namespace +':' Punctuation +'关于' Name.Tag +'|' Punctuation +'关于' Text +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Edge case' Name.Tag +'#' Punctuation +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Edge case' Name.Tag +'#' Punctuation +'|' Punctuation +'another' Text +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +' pagename ' Name.Tag +'|' Punctuation +' ' Text +'https' Text +':' Text +'/' Text +'/' Text +'www' Text +'.' Text +'example' Text +'.' Text +'com' Text +' ' Text +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'|' Punctuation +' ' Text +'this' Text +' ' Text +'is' Text +' ' Text +'legal' Text +'!' Text +' ' Text +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +' ' Name.Tag +'|' Punctuation +' ' Text +'this' Text +' ' Text +'is' Text +' ' Text +'illegal' Text +'!' Text +' ' Text +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'public transport' Name.Tag +'#' Punctuation +'sth' Name.Label +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +':' Punctuation +'public transport' Name.Tag +'#' Punctuation +'sth' Name.Label +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +':' Punctuation +'public transport' Name.Tag +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'a' Name.Namespace +':' Punctuation +'public transport' Name.Tag +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'a' Name.Namespace +':' Punctuation +'public transport' Name.Tag +'#' Punctuation +'sth' Name.Label +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'a' Name.Namespace +':' Punctuation +'public transport' Name.Tag +'#' Punctuation +'sth' Name.Label +'|' Punctuation +'<' Punctuation +'code' Name.Tag +'>' Punctuation +'a' Text +'</' Punctuation +'code' Name.Tag +'>' Punctuation +' ' Text +'b' Text +' ' Text +"''" Generic.Emph +'c' Generic.Emph +"''" Generic.Emph +' ' Text +"'''" Generic.Strong +'d' Generic.Strong +"'''" Generic.Strong +' ' Text +'~~~~' Keyword +' ' Text +'<' Punctuation +'nowiki' Name.Tag +'>' Punctuation +'[' Text +'[' Text +'a' Text +']' Text +']' Text +'</' Punctuation +'nowiki' Name.Tag +'>' Punctuation +']]' Punctuation +'\n' Text + +'\n' Text + +'London' Text +' ' Text +'has' Text +' ' Text +'[[' Punctuation +'public transport' Name.Tag +']]' Punctuation +'.' Text +'\n' Text + +'\n' Text + +'Link' Text +' ' Text +'to' Text +' ' Text +'this' Text +' ' Text +'page' Text +':' Text +' ' Text +'"' Text +'[[' Punctuation +'Help' Name.Namespace +':' Punctuation +'Wikitext' Name.Tag +']]' Punctuation +'"' Text +' ' Text +'will' Text +' ' Text +'appear' Text +' ' Text +'only' Text +' ' Text +'as' Text +' ' Text +'bold' Text +' ' Text +'text' Text +'.' Text +'\n' Text + +'\n' Text + +'New' Text +' ' Text +'York' Text +' ' Text +'also' Text +' ' Text +'has' Text +' ' Text +'[[' Punctuation +'public transport' Name.Tag +'|' Punctuation +'public' Text +' ' Text +'transportation' Text +']]' Punctuation +'.' Text +'\n' Text + +'\n' Text + +'[[' Punctuation +'kingdom (biology)' Name.Tag +'|' Punctuation +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Seattle, Washington' Name.Tag +'|' Punctuation +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Wikipedia' Name.Namespace +':' Punctuation +'Manual of Style' Name.Tag +'#' Punctuation +'Links' Name.Label +'|' Punctuation +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +':Category' Name.Namespace +':' Punctuation +'Character sets' Name.Tag +'|' Punctuation +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'commons:category' Name.Namespace +':' Punctuation +'Wikimedia' Name.Tag +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Wiktionary:fr' Name.Namespace +':' Punctuation +'bonjour' Name.Tag +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Wiktionary:fr' Name.Namespace +':' Punctuation +'bonjour' Name.Tag +'|' Punctuation +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Wiktionary:fr' Name.Namespace +':' Punctuation +'bonjour' Name.Tag +'|' Punctuation +'bonjour' Text +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +' wp' Name.Namespace +':' Punctuation +'pagename ' Name.Tag +'|' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +'' Punctuation +'[[' Punctuation +' wp' Name.Namespace +':' Punctuation +'pagename ' Name.Tag +'|' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +']]' Punctuation +' ' Text +'[[' Punctuation +' wp' Name.Namespace +':' Punctuation +'pagename ' Name.Tag +'|' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +']]' Punctuation +' ' Text +'[' Text +'[' Text +' ' Text +'wp' Text +':' Text +'pagename' Text +'[[' Punctuation +' wp' Name.Namespace +':' Punctuation +'pagename ' Name.Tag +'|' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +']]' Punctuation +' ' Text +'|' Text +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +']' Text +']' Text +' ' Text +'[[' Punctuation +' wp' Name.Namespace +':' Punctuation +'pagename ' Name.Tag +'|' Punctuation +' ' Text +'page' Text +' ' Text +'nam' Text +'' Punctuation +'[[' Punctuation +' wp' Name.Namespace +':' Punctuation +'pagename ' Name.Tag +'|' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +']]' Punctuation +'e' Text +' ' Text +']' Text +']' Text +']' Text +']' Text +'\n' Text + +'\n' Text + +'[[' Punctuation +' wp' Name.Namespace +':' Punctuation +'pagename ' Name.Tag +'|' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +']]' Punctuation +'\n' Text + +'\n' Text + +'[' Text +'<' Punctuation +'nowiki' Name.Tag +' ' Text.Whitespace +'/>' Punctuation +'[' Text +' ' Text +'wp' Text +':' Text +'pagename' Text +' ' Text +'|' Text +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +']' Text +']' Text +'\n' Text + +'\n' Text + +'[' Text +'[' Text +'<' Punctuation +'nowiki' Name.Tag +' ' Text.Whitespace +'/>' Punctuation +' ' Text +'wp' Text +':' Text +'pagename' Text +' ' Text +'|' Text +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +']' Text +']' Text +'\n' Text + +'\n' Text + +'[' Text +'[' Text +' ' Text +'wp' Text +':' Text +'pagename' Text +' ' Text +'<' Punctuation +'nowiki' Name.Tag +' ' Text.Whitespace +'/>' Punctuation +'|' Text +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +']' Text +']' Text +'\n' Text + +'\n' Text + +'[[' Punctuation +' wp' Name.Namespace +':' Punctuation +'pagename ' Name.Tag +'|' Punctuation +' ' Text +'page' Text +' ' Text +'name' Text +' ' Text +']' Text +'<' Punctuation +'nowiki' Name.Tag +' ' Text.Whitespace +'/>' Punctuation +']' Text +'\n' Text + +'\n' Text + +'' Punctuation +'[[' Punctuation +'a' Name.Tag +'|' Punctuation +']]' Punctuation +']' Text +']' Text +'\n' Text + +'\n' Text + +'[[' Punctuation +'foo' Name.Tag +'|' Punctuation +'[' Punctuation +'https://example.com' Name.Label +']' Punctuation +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'a' Name.Tag +'|' Punctuation +'' Punctuation +'[[' Punctuation +']]' Punctuation +']' Text +']' Text +'\n' Text + +'\n' Text + +'[[' Punctuation +'Hindenburg disaster' Name.Tag +'|' Punctuation +"''" Generic.Emph +'Hindenburg' Generic.Emph +"''" Generic.Emph +' ' Text +'disaster' Text +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Special' Name.Namespace +':' Punctuation +'Diff/330349143/330350877' Name.Tag +'|' Punctuation +'Diff' Text +' ' Text +'between' Text +' ' Text +'revisions' Text +' ' Text +'330349143' Text +' ' Text +'and' Text +' ' Text +'330350877' Text +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Special' Name.Namespace +':' Punctuation +'Diff/330350877' Name.Tag +'|' Punctuation +'Diff' Text +' ' Text +'between' Text +' ' Text +'revisions' Text +' ' Text +'330349143' Text +' ' Text +'and' Text +' ' Text +'330350877' Text +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Special' Name.Namespace +':' Punctuation +'Permalink/330350877' Name.Tag +'|' Punctuation +'Revision' Text +' ' Text +'330350877' Text +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Special' Name.Namespace +':' Punctuation +'Contributions/2001:0db8:0000:0000:0000:ff00:0042:8329' Name.Tag +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'Special' Name.Namespace +':' Punctuation +'Contributions/UserName' Name.Tag +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'File' Name.Namespace +':' Punctuation +'wiki.png' Name.Tag +'|' Punctuation +'thumb' Text +'|' Punctuation +'left' Text +'|' Punctuation +'alt' Name.Attribute +'=' Operator +'{{' Punctuation +'User' Name.Tag +' ' Name.Tag +'sandbox' Name.Tag +' ' Name.Tag +'notice' Name.Tag +'}}' Punctuation +'|' Punctuation +'Wikipedia' Text +' ' Text +"''" Generic.Emph +'logo' Generic.Emph +"''" Generic.Emph +']]' Punctuation +'\n' Text + +'\n' Text + +'[[' Punctuation +'A' Name.Tag +'|' Punctuation +'[' Punctuation +'//example.com' Name.Label +' ' Text.Whitespace +'a' Text +' ' Text +'b' Text +' ' Text +'c' Text +']' Punctuation +']]' Punctuation +'\n' Text |