���ѧۧݧ�ӧ�� �ާ֧ߧ֧էا֧� - ���֧էѧܧ�ڧ��ӧѧ�� - /home/rickpfrv/wiki.craftaro.com/vendor/wikimedia/parsoid/tests/parser/annotationParserTests.txt
���ѧ٧ѧ�
!! Version 2 !! article Template:1x !! text {{{1}}} !! endarticle # TODO: add a test for T295168 when tackling it !! test Continue to serialize the old annotated 2.3.0 html !! options parsoid=html2wt annotations=1 !! html/parsoid <p><span typeof="mw:Extension/dummyanno" about="#mwt2" data-mw='{"name":"dummyanno","attrs":{},"body":{"extsrc":"foo"}}'>foo</span></p><p> foo</p><pre typeof="mw:Extension/dummyanno" about="#mwt4" data-mw='{"name":"dummyanno","attrs":{},"body":{"extsrc":"\n bar\n"}}'>bar </pre><p>baz</p> <p>foo</p> <pre>bar</pre> <p>baz</p> !! wikitext <dummyanno>foo</dummyanno> foo<dummyanno> bar </dummyanno>baz foo bar baz !! end !! test Whole content between dummyanno tags !! options annotations=1 !! wikitext <dummyanno> ==Title== Let's have some text. </dummyanno> !! html/parsoid <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/> <h2 id="Title" data-parsoid='{"dsr":[12,23,2,2,1,1]}'>Title</h2> <p data-parsoid='{"dsr":[25,46,0,0]}'>Let's have some text.</p> <meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[45,57]}'/> !! end !! test Inline dummyanno tags !! options annotations=1 !! wikitext Some text <dummyanno>with some annotated content</dummyanno> inline. !! html/parsoid <p>Some text <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[10,21]}' />with some annotated content<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[48,60]}'/> inline.</p> !! end !! test Template inside a dummyanno tag should not make a difference on its handling !! options annotations=1 !! wikitext <dummyanno>{{1x| == Title == }} Let's have some text. </dummyanno> !! html/parsoid <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"1x","href":"./Template:1x"},"params":{"1":{"wt":"\n== Title ==\n"}},"i":0}}]}'> </span><h2 about="#mwt1" id="Title">Title</h2><span about="#mwt1"> </span> <p>Let's have some text.</p> <meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[55,67]}'/> !! end !! test Two inline dummyanno tags should have different rangeIds !! options annotations=1 !! wikitext Some inline <dummyanno>text</dummyanno> followed by <dummyanno>some more text</dummyanno> inline !! html/parsoid <p>Some inline <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[12,23]}'/>text<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[27,39]}'/> followed by <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa1","extendedRange":false,"wtOffsets":[52,63]}'/>some more text<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[77,89]}'/> inline</p> !! end !! test Two dummyanno tags on new lines should have different rangeIds !! options annotations=1 !! wikitext Some <dummyanno> text </dummyanno> followed by <dummyanno> some more text </dummyanno> to dummyanno !! html/parsoid <p>Some <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[7,18]}'/> text <meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[24,36]}'/> followed by <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa1","extendedRange":false,"wtOffsets":[51,62]}'/> some more text <meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[78,90]}'/> to dummyanno</p> !! end !! test Name attribute in ann2 tags should be added to the meta tag !! options annotations=1 !! wikitext Some text <dummyanno>with some <ann2 name="plop">undummyannod</ann2> content</dummyanno> inline. !! html/parsoid <p>Some text <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[10,21]}'/>with some <meta typeof="mw:Annotation/ann2" data-mw='{"attrs":{"name":"plop"},"rangeId":"mwa1","extendedRange":false,"wtOffsets":[31,49]}'/>undummyannod<meta typeof="mw:Annotation/ann2/End" data-mw='{"wtOffsets":[61,68]}'/> content<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[76,88]}'/> inline.</p> !! end !! test Annotation wrapping an entire paragraph should be nested inside the paragraph !! options annotations=1 !! wikitext foo <dummyanno>bar</dummyanno> <dummyanno>baz</dummyanno> !! html/parsoid <p>foo</p> <p><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[5,16]}'/>bar<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[19,31]}'/></p> <p><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa1","extendedRange":false,"wtOffsets":[33,44]}'/>baz<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[47,59]}'/></p> !! end !! test Two paragraphs between dummyanno tags should roundtrip without duplicating the tags (DSRs are adjusted correctly) !! options annotations=1 !! wikitext <dummyanno>plop Let's have some text.</dummyanno> !! html/parsoid <meta typeof="mw:Annotation/dummyanno" data-parsoid='{"dsr":[0,11,null,null]}' data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/><p data-parsoid='{"dsr":[11,15,0,0]}'>plop</p> <p data-parsoid='{"dsr":[17,38,0,0]}'>Let's have some text.</p><meta typeof="mw:Annotation/dummyanno/End" data-parsoid='{"dsr":[38,50,null,null]}' data-mw='{"wtOffsets":[38,50]}'/> !! end !! test Start dummyanno tag at the beginning of a paragraph and end within <i> should extend to the end of <i> but not the whole paragraph !! options parsoid={ "modes": ["wt2html", "selser","wt2wt"] } annotations=1 !! wikitext <dummyanno>This should ''fail</dummyanno> miserably'' ... let's fix it !! html/parsoid here <p><span typeof="mw:ExtendedAnnRange" data-parsoid='{"autoInsertedStart":true,"autoInsertedEnd":true}'><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":true,"wtOffsets":[0,11]}'/>This should <i>fail miserably</i><meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[29,41]}'/></span> ... let's fix it</p> !! end !! test End dummyanno tag at the end of a paragraph and beginning within <i> should extend to the end of <i> but not the whole paragraph !! options parsoid={ "modes": ["wt2html", "selser","wt2wt"] } annotations=1 !! wikitext This should ''fail <dummyanno>miserably'' ... let's fix it</dummyanno> !! html/parsoid here <p>This should <span typeof="mw:ExtendedAnnRange" data-parsoid='{"autoInsertedStart":true,"autoInsertedEnd":true}'><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":true,"wtOffsets":[19,30]}'/><i>fail miserably</i> ... let's fix it<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[58,70]}'/></span></p> !! end !! test Meta merging with annotations/template should not happen !! options annotations=1 !! wikitext <dummyanno>{{1x|stuff}}</dummyanno> !! html/parsoid <p><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"1x","href":"./Template:1x"},"params":{"1":{"wt":"stuff"}},"i":0}}]}'>stuff</span><meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[23,35]}'/></p> !! end !! test Meta merging with template/annotation is fine !! options annotations=1 !! wikitext {{1x|<dummyanno>stuff</dummyanno>}} !! html/parsoid <p><meta typeof="mw:Transclusion mw:Annotation/dummyanno" about="#mwt1" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"1x","href":"./Template:1x"},"params":{"1":{"wt":"<dummyanno>stuff</dummyanno>"}},"i":0}}],"rangeId":"mwa0"}'/><span about="#mwt1">stuff</span><meta typeof="mw:Annotation/dummyanno/End" about="#mwt1" data-mw='{"rangeId":"mwa0"}'/></p> !! end !! test Attributes without value should be transferred to and back from the meta tag !! options annotations=1 !! wikitext <dummyanno nowrap>some stuff</dummyanno> !! html/parsoid <p><meta typeof="mw:Annotation/dummyanno" data-mw='{"attrs":{"nowrap":""},"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,18]}'/>some stuff<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[28,40]}'/></p> !! end !! test Annotation open tag in fosterable position should expand the range to the entire table !! options parsoid={ "modes": ["wt2html", "selser","wt2wt"] } annotations=1 !! wikitext {| |table |with |- <dummyanno> |some |content</dummyanno> |- |dummyanno |one line |} !! html/parsoid <div typeof="mw:ExtendedAnnRange" data-parsoid='{"autoInsertedStart":true,"autoInsertedEnd":true}'><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":true,"wtOffsets":[19,30]}'/> <table> <tbody><tr><td>table</td> <td data-parsoid>with</td></tr> <tr data-parsoid='{"startTagSrc":"|-"}'> <td>some</td> <td>content</td></tr> <tr data-parsoid='{"startTagSrc":"|-"}'> <td>dummyanno</td> <td>one line</td></tr> </tbody></table> <meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[45,57]}' /></div> !! end !! test dummyanno in the middle of fostered content should extend to the whole range, including fostered content !! options parsoid={ "modes": ["wt2html", "selser","wt2wt"] } annotations=1 !! wikitext {| foo <dummyanno>bar</dummyanno> |- |baz |} !! html/parsoid <div typeof="mw:ExtendedAnnRange" data-parsoid='{"autoInsertedStart":true,"autoInsertedEnd":true}'><meta typeof="mw:Annotation/dummyanno" data-parsoid='{"wasMoved":true}' data-mw='{"rangeId":"mwa0","extendedRange":true,"wtOffsets":[7,18]}'/><p data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true}'> foo bar</p><table> <tbody><tr data-parsoid='{"startTagSrc":"|-"}'> <td>baz </td></tr></tbody></table><meta typeof="mw:Annotation/dummyanno/End" data-parsoid='{"wasMoved":true}' data-mw='{"wtOffsets":[21,33]}'/></div> !!end !!test dummyanno getting roped into a template because of fostering should get the about attribute of the template !! options parsoid={ "modes": ["wt2html", "selser","wt2wt"] } annotations=1 !! wikitext {{1x|Some text! <table> <tr> <td>table</td></tr>}} <dummyanno><tr> <td>stuff</td> </tr></dummyanno> </table> !! html/parsoid <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"1x","href":"./Template:1x"},"params":{"1":{"wt":"Some text!\n<table>\n<tr>\n<td>table</td></tr>"}},"i":0}},"\n<dummyanno><tr>\n<td>stuff</td>\n</tr></dummyanno>\n</table>"]}'>Some text!</p><span about="#mwt1"> </span><div typeof="mw:ExtendedAnnRange" data-parsoid='{"autoInsertedStart":true,"autoInsertedEnd":true}'><meta typeof="mw:Annotation/dummyanno" about="#mwt1" data-parsoid='{"dsr":[51,62,null,null],"wasMoved":true}' data-mw='{"rangeId":"mwa0","extendedRange":true,"wtOffsets":[51,62]}' /><table about="#mwt1" data-parsoid='{"stx":"html","dsr":[null,108,null,8]}'> <tbody data-parsoid='{"dsr":[null,100,0,0]}'><tr data-parsoid='{"stx":"html"}'> <td data-parsoid='{"stx":"html"}'>table</td></tr> <tr data-parsoid='{"stx":"html","dsr":[62,87,4,5]}'> <td data-parsoid='{"stx":"html","dsr":[67,81,4,5]}'>stuff</td> </tr> </tbody></table><meta typeof="mw:Annotation/dummyanno/End" about="#mwt1" data-parsoid='{"dsr":[87,99,null,null],"wasMoved":true}' data-mw='{"wtOffsets":[87,99]}' /></div> !!end !! test dummyanno tags around <pre> area with new lines !! options annotations=1 !! wikitext <dummyanno> foo </dummyanno> !! html/parsoid <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/> <pre>foo</pre> <meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[17,29]}'/> !! end !! test Newlines should be inserted between annotation tags and pre !! options parsoid={ "modes": ["html2wt"] } annotations=1 !! html/parsoid foo<meta typeof="mw:Annotation/dummyanno" /><pre>bar</pre><meta typeof="mw:Annotation/dummyanno/End"/>baz foo<pre>bar</pre>baz !! wikitext foo<dummyanno> bar </dummyanno>baz foo bar baz !! end !! test dummyanno tags in list items !! options annotations=1 !! wikitext *<dummyanno>List item!</dummyanno> !! html/parsoid <ul data-parsoid='{"dsr":[0,35,0,0]}'><li data-parsoid='{"dsr":[0,35,1,0,1,0]}'><meta typeof="mw:Annotation/dummyanno" data-parsoid='{"dsr":[1,12,null,null]}' data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[1,12]}'/>List item!<meta typeof="mw:Annotation/dummyanno/End" data-parsoid='{"dsr":[22,34,null,null]}' data-mw='{"wtOffsets":[22,34]}'/></li></ul> !! end ### Tests from annotation spec !! test 1/ Whole content contained in annotation tags !! options annotations=1 !! wikitext <dummyanno> One paragraph. And another. </dummyanno> !! html/parsoid <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/> <p>One paragraph.</p> <p>And another.</p> <meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[41,53]}'/> !! end !! test 2/ Extended annotation range !! options parsoid={ "modes": ["wt2html", "selser","wt2wt"] } annotations=1 !! wikitext This is ''an <dummyanno>artificial'' '''example</dummyanno> of''' extension. !! html/parsoid <p>This is <span typeof="mw:ExtendedAnnRange" data-parsoid='{"autoInsertedStart":true,"autoInsertedEnd":true}'><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":true,"wtOffsets":[13,24]}'/><i>an artificial</i> <b>example of</b><meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[47,59]}'/></span> extension.</p> !! end !! test 3/ Two types of annotation, nested; annotation attributes !! options annotations=1 !! wikitext <dummyanno>Some text <ann2 name="myvar">with a variable</ann2> in the middle</dummyanno> !! html/parsoid <p><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/>Some text <meta typeof="mw:Annotation/ann2" data-mw='{"attrs":{"name":"myvar"},"rangeId":"mwa1","extendedRange":false,"wtOffsets":[21,40]}'/>with a variable<meta typeof="mw:Annotation/ann2/End" data-mw='{"wtOffsets":[55,62]}'/> in the middle<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[76,88]}'/></p> !! end !! test 4/ Template (fully enclosed) in annotation range !! options annotations=1 !! wikitext aa <dummyanno>bb {{1x|some content}} bb</dummyanno> aa !! html/parsoid <p>aa <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[3,14]}'/>bb <span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"1x","href":"./Template:1x"},"params":{"1":{"wt":"some content"}},"i":0}}]}'>some content</span> bb<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[39,51]}'/> aa</p> !! end !! test 5/ annotation (fully enclosed) in template !! options annotations=1 !! wikitext {{1x|bb <dummyanno>some content</dummyanno> bb}} aa !! html/parsoid <p><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"1x","href":"./Template:1x"},"params":{"1":{"wt":"bb <dummyanno>some content</dummyanno> bb"}},"i":0}}]}'>bb </span><meta typeof="mw:Annotation/dummyanno" about="#mwt1" data-mw='{"rangeId":"mwa0"}'/><span about="#mwt1">some content</span><meta typeof="mw:Annotation/dummyanno/End" about="#mwt1" data-mw='{"rangeId":"mwa0"}'/><span about="#mwt1"> bb</span> aa</p> !! end !! test 7/ attributes in annotations !! options annotations=1 !! wikitext {| |- | style="background: <dummyanno>red</dummyanno>; color: white;" |abc |jkl |} !! html/parsoid <table> <tbody> <tr data-parsoid='{"startTagSrc":"|-"}'> <td style="background: red; color: white;" about="#mwt1" typeof="mw:ExpandedAttrs mw:Annotation/dummyanno" data-parsoid='{"a":{"style":"background: red; color: white;"},"sa":{"style":"background: <dummyanno>red</dummyanno>; color: white;"}}' data-mw='{"attribs":[[{"txt":"style"},{"html":"background: <meta typeof=\"mw:Annotation/dummyanno\" data-parsoid='{\"dsr\":[27,38,null,null]}' data-mw='{\"rangeId\":\"mwa0\",\"extendedRange\":false,\"wtOffsets\":[27,38]}'/>red<meta typeof=\"mw:Annotation/dummyanno/End\" data-parsoid='{\"dsr\":[41,53,null,null]}' data-mw='{\"wtOffsets\":[41,53]}'/>; color: white;"}]]}'>abc</td> <td>jkl</td></tr> </tbody></table> !! end !! test 8/ fostered annotation markers !! options parsoid={ "modes": ["wt2html", "selser", "wt2wt"] } annotations=1 !! wikitext {| |table |with |- <dummyanno> |some |content </dummyanno> |- |dummyanno |one line |} !! html/parsoid <div typeof="mw:ExtendedAnnRange" data-parsoid='{"autoInsertedStart":true,"autoInsertedEnd":true}'><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":true,"wtOffsets":[19,30]}'/><table> <tbody><tr data-parsoid='{"autoInsertedStart":true}'><td>table</td> <td>with</td></tr> <tr data-parsoid='{"startTagSrc":"|-"}'> <td>some</td> <td>content </td></tr> <tr data-parsoid='{"startTagSrc":"|-"}'> <td>dummyanno</td> <td>one line</td></tr> </tbody></table><meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[46,58]}'/></div> !!end !! test Selser: add a paragraph at the end of the content should not make the </dummyanno> tag disappear !! options parsoid={ "modes": ["selser"], "changes": [ ["p", "after", "<p>plop</p>"] ] } annotations=1 !! wikitext <dummyanno> ==plop== Add another paragraph. </dummyanno> !! wikitext/edited <dummyanno> ==plop== Add another paragraph. plop </dummyanno> !!end !! test Selser: add content at the end of a paragraph with badly nested content with annotation !! options parsoid={ "modes": ["selser"], "changes": [ ["p", "append", "something"] ] } annotations=1 !! wikitext Some ''stuff <dummyanno>and '''also some'' more</dummyanno> stuff''' than that. !! wikitext/edited Some ''stuff <dummyanno>and '''also some'' more</dummyanno> stuff''' than that.something !! end !! test Selser: add content at the end of a paragraph with badly nested content without annotation !! options annotations=1 !! wikitext Some ''stuff and '''also some'' more stuff''' than that. !! html/parsoid <p>Some <i>stuff and <b>also some</b></i><b> more stuff</b> than that.</p> !! end !! test Selser: add content in a cell of a table where dummyanno gets fostered out should keep the annotation around the table !! options parsoid={ "modes": ["selser"], "changes": [ ["tr > td:first-child", "text", "plop"] ] } annotations=1 !! wikitext {| |- |a |b |- <dummyanno> |c |d</dummyanno> |- |e |f |} !!wikitext/edited <dummyanno> {| |- |plop |b |- |plop |d |- |plop |f |} </dummyanno> !!end !! test Selser: add content before and after <dummyanno> and </dummyanno> tags should keep paragraphs !! options parsoid={ "modes": ["selser"], "changes": [ ["meta", "before", "<p>plop</p>"], ["meta", "after", "<p>plop2</p>"] ] } annotations=1 !! wikitext <dummyanno> hello </dummyanno> !! wikitext/edited plop <dummyanno> plop2 hello plop </dummyanno> plop2 !! end !! test Selser: add content before <dummyanno> and </dummyanno> tags should keep paragraphs !! options parsoid={ "modes": ["selser"], "changes": [ ["meta", "before", "<p>plop</p>"] ] } annotations=1 !! wikitext <dummyanno> hello </dummyanno> !! wikitext/edited plop <dummyanno> hello plop </dummyanno> !! end !! test Selser: add content after <dummyanno> and </dummyanno> tags should keep paragraphs !! options parsoid={ "modes": ["selser"], "changes": [ ["meta", "after", "<p>plop2</p>"] ] } annotations=1 !! wikitext <dummyanno> hello </dummyanno> !! wikitext/edited <dummyanno> plop2 hello </dummyanno> plop2 !! end !! test Selser: add headings after <dummyanno> and </dummyanno> tags should yield the right amount of new lines !!options parsoid={ "modes": ["selser"], "changes": [ ["meta", "after", "<h2>plop</h2>"] ] } annotations=1 !! wikitext ==title== some paragraph <dummyanno> hello </dummyanno> some other paragraph !! wikitext/edited ==title== some paragraph <dummyanno> == plop == hello </dummyanno> == plop == some other paragraph !! end !! test Selser: add headings before <dummyanno> and </dummyanno> tags should yield the right amount of new lines !!options parsoid={ "modes": ["selser","wt2wt"], "changes": [ ["meta", "before", "<h2>plop</h2>"] ] } annotations=1 !!wikitext ==title== some paragraph <dummyanno> hello </dummyanno> some other paragraph !!wikitext/edited ==title== some paragraph == plop == <dummyanno> hello == plop == </dummyanno> some other paragraph !! end !! test Selser: add lists before <dummyanno> and </dummyanno> tags should yield the right amount of new lines !! options parsoid={ "modes": ["selser"], "changes": [ ["meta", "before", "<ul><li>plop</li></ul>"] ] } annotations=1 !! wikitext ==title== some paragraph <dummyanno> hello </dummyanno> some other paragraph !!wikitext/edited ==title== some paragraph * plop <dummyanno> hello * plop </dummyanno> some other paragraph !! end !! test Selser: add lists after <dummyanno> and </dummyanno> tags should yield the right amount of new lines !!options parsoid={ "modes": ["selser"], "changes": [ ["meta", "after", "<ul><li>plop</li></ul>"] ] } annotations=1 !! wikitext ==title== some paragraph <dummyanno> hello </dummyanno> some other paragraph !!wikitext/edited ==title== some paragraph <dummyanno> * plop hello </dummyanno> * plop some other paragraph !! end !! test T295330 - dsr computation should allow proper selser !! options annotations=1 !! wikitext <dummyanno> <!--T:1--> '''The quick brown fox jumps over the lazy dog.''' </dummyanno> [[Category:Foo]] !! html/parsoid <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/> <!--T:1--> <p><b>The quick brown fox jumps over the lazy dog.</b></p> <meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[74,86]}'/> <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/> !! end ## FIXME: This is currently awkward where only the start of the dummyanno is pulled into the template range. ## This doesn't affect correctness because the ranges are all marked extended (because of bad nesting). ## But, the bad nesting is an artefact of how the paragraph wrapper leaves the opening and closing meta ## tags of the annotation range in different paragraphs, and one of those paragraphs happen to be from ## a template. If the p-wrapper can be tweaked to be smarter about this, this will get cleaned up better. ## But, for now, the focus is on not breaking selser. !! test Top-level metas should not be migrated into paragraphs, nor pulled in the template !! options parsoid=wt2html,selser,wt2wt annotations=1 !! wikitext {{1x|<div>a</div> b}} <dummyanno> c </dummyanno> !! html/parsoid <div about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"1x","href":"./Template:1x"},"params":{"1":{"wt":"<div>a</div> b"}},"i":0}}]}'>a</div><p about="#mwt1"> b</p> <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[22,33]}'/> <p>c</p> <meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[36,48]}'/> !! end !! test Annotations should not be hoisted out of headers !! wikitext ==<dummyanno><!--T:19--> Organizational and Planning Projects</dummyanno>== !! options annotations=1 !! html/parsoid <h2 id="Organizational_and_Planning_Projects"><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[2,13]}'/><!--T:19--> Organizational and Planning Projects<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[61,73]}'/></h2> !! end # Fixing T296169 in an imperfect way - see AnnotationDOMRangeBuilder.php#removeNestedRanges for details # This test purposefully fails on wt2wt, but we want to keep the output as part of the tests results. # Selser failures are also due to the wt2wt discrepancy. !! test T296169: Nested annotations should be dropped in HTML output !! options parsoid={ "modes": ["wt2html", "selser", "wt2wt"] } annotations=1 !! wikitext <dummyanno><dummyanno>t1</dummyanno></dummyanno> <dummyanno>t2</dummyanno> <dummyanno><ann2 name="plop">t3</ann2></dummyanno> !! html/parsoid <p><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/>t1<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[36,48]}'/> <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa2","extendedRange":false,"wtOffsets":[49,60]}'/>t2<meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[62,74]}'/> <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa3","extendedRange":false,"wtOffsets":[75,86]}'/><meta typeof="mw:Annotation/ann2" data-mw='{"attrs":{"name":"plop"},"rangeId":"mwa4","extendedRange":false,"wtOffsets":[86,104]}'/>t3<meta typeof="mw:Annotation/ann2/End" data-mw='{"wtOffsets":[106,113]}'/><meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[113,125]}'/></p> !! end # T296169 !! test T296169: Extended annotations that yield a nested annotation should not nest said annotation !! options parsoid={ "modes": ["wt2html", "selser", "wt2wt"] } annotations=1 !! wikitext a ''<dummyanno>b'' c ''d </dummyanno> e <dummyanno>f</dummyanno>'' g !! html/parsoid <p>a <span typeof="mw:ExtendedAnnRange" data-parsoid='{"autoInsertedStart":true,"autoInsertedEnd":true}'><meta typeof="mw:Annotation/dummyanno" data-parsoid='{"wasMoved":true}' data-mw='{"rangeId":"mwa0","extendedRange":true,"wtOffsets":[4,15]}'/><i>b</i> c <i>d e f</i><meta typeof="mw:Annotation/dummyanno/End" data-parsoid='{"wasMoved":true}' data-mw='{"wtOffsets":[25,37]}'/></span> g</p> !! end !! test # This is not correct yet because the template is not expanded in the HTML - the template is considered as a raw string # instead. Follow-up as T299523. Annotations with templated annotation attribute shouldn't emit a warning and should round-trip !! options annotations=1 !! wikitext <dummyanno> <ann2 {{1x|1="name=hello other=plop nowrap"}}>test</ann2> </dummyanno> !! html/parsoid <meta typeof="mw:Annotation/dummyanno" data-parsoid='{"dsr":[0,11,null,null]}' data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/> <p data-parsoid='{"dsr":[12,69,0,0]}'><meta typeof="mw:Annotation/ann2" data-parsoid='{"dsr":[12,58,null,null]}' data-mw='{"attrs":{"{{1x|1=\"name=hello other=plop nowrap\"}}":""},"rangeId":"mwa1","extendedRange":false,"wtOffsets":[12,58]}'/>test<meta typeof="mw:Annotation/ann2/End" data-parsoid='{"dsr":[62,69,null,null]}' data-mw='{"wtOffsets":[62,69]}'/></p> <meta typeof="mw:Annotation/dummyanno/End" data-parsoid='{"dsr":[70,82,null,null]}' data-mw='{"wtOffsets":[70,82]}'/> !! end !! test Annotations with templated annotation attribute name shouldn't emit a warning and should round-trip !! options annotations=1 !! wikitext <dummyanno> <ann2 {{1x|name}}="hello">test</ann2> </dummyanno> !! html/parsoid <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/> <p><meta typeof="mw:Annotation/ann2" data-mw='{"attrs":{"{{1x|name}}":"hello"},"rangeId":"mwa1","extendedRange":false,"wtOffsets":[12,38]}'/>test<meta typeof="mw:Annotation/ann2/End" data-mw='{"wtOffsets":[42,49]}'/></p> <meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[50,62]}'/> !! end !! test Annotations with templated annotation attribute value shouldn't emit a warning and should round-trip !! options annotations=1 !! wikitext <dummyanno> <ann2 name="{{1x|hello}}">test</ann2> </dummyanno> !! html/parsoid <meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/> <p><meta typeof="mw:Annotation/ann2" data-mw='{"attrs":{"name":"{{1x|hello}}"},"rangeId":"mwa1","extendedRange":false,"wtOffsets":[12,38]}'/>test<meta typeof="mw:Annotation/ann2/End" data-mw='{"wtOffsets":[42,49]}'/></p> <meta typeof="mw:Annotation/dummyanno/End" data-mw='{"wtOffsets":[50,62]}'/> !! end !! test Annotation around a heading should not break the heading !! options annotations=1 !! wikitext <dummyanno>==plop==</dummyanno> !! html/parsoid <meta typeof="mw:Annotation/dummyanno" data-parsoid='{"dsr":[0,11,null,null]}' data-mw='{"rangeId":"mwa0","extendedRange":false,"wtOffsets":[0,11]}'/><h2 id="plop" data-parsoid='{"dsr":[11,19,2,2]}'>plop</h2><meta typeof="mw:Annotation/dummyanno/End" data-parsoid='{"dsr":[19,31,null,null]}' data-mw='{"wtOffsets":[19,31]}'/> !! end !! test New lines around table-spanning annotation range extension should be maintained in selser !! options annotations=1 parsoid=wt2html,wt2wt,selser !! wikitext txt1 {| |- <dummyanno>txt2</dummyanno> |text3 |} txt4 !! html/parsoid <p>txt1</p> <div typeof="mw:ExtendedAnnRange" data-parsoid='{"autoInsertedStart":true,"autoInsertedEnd":true}'><meta typeof="mw:Annotation/dummyanno" data-parsoid='{"wasMoved":true}' data-mw='{"rangeId":"mwa0","extendedRange":true,"wtOffsets":[11,22]}'/><p data-parsoid='{"fostered":true,"autoInsertedStart":true}'>txt2</p><table> <tbody><tr data-parsoid='{"startTagSrc":"|-"}'> <td>text3 </td></tr></tbody></table><meta typeof="mw:Annotation/dummyanno/End" data-parsoid='{"wasMoved":true}' data-mw='{"wtOffsets":[26,38]}'/></div> <p>txt4</p> !! end !! test Extended ranges should not result in bad nesting (T306186) !! options annotations=1 parsoid=wt2html,selser !! wikitext <dummyanno> text</dummyanno> <dummyanno> by someone Highway of Montenegro.</dummyanno> <dummyanno> by Albin Olsson, CC BY-SA 4.0. Greta Salóme, singing for Iceland.</dummyanno> <dummyanno> by Albin Olsson, CC BY-SA 4.0. Nina Kraljić, representing Croatia.</dummyanno> !! html/parsoid <div typeof="mw:ExtendedAnnRange" data-parsoid='{"autoInsertedStart":true,"autoInsertedEnd":true}'><meta typeof="mw:Annotation/dummyanno" data-mw='{"rangeId":"mwa0","extendedRange":true,"wtOffsets":[0,11]}'/> <p>text by someone</p> <p>Highway of Montenegro. by Albin Olsson, CC BY-SA 4.0.</p> <p>Greta Salóme, singing for Iceland. by Albin Olsson, CC BY-SA 4.0.</p> <p>Nina Kraljić, representing Croatia.</p><meta typeof="mw:Annotation/dummyanno/End" data-parsoid='{"wasMoved":true}' data-mw='{"wtOffsets":[260,272]}'/></div> !! end # Looks like the comment, and the whitespace before 'Purge' are all needed. # Also, adding anything before the {{{1|..}} also leads to the test passing # without the T307172 fix. # So, this is a narrow edge case specific to this wikitext form. !! test T307172 Regression test !! options annotations=1 parsoid=wt2html !! wikitext {{{1|<dummyanno><!--T:2--> Purge</dummyanno>}}} !! html/parsoid <meta typeof="mw:Param mw:Annotation/dummyanno" about="#mwt1" data-mw='{"parts":[{"templatearg":{"target":{"wt":"1"},"params":{"1":{"wt":"<dummyanno><!--T:2--> Purge</dummyanno>"}},"i":0}}],"rangeId":"mwa0","extendedRange":false,"wtOffsets":[5,16]}'/><span about="#mwt1"><!--T:2--></span><pre about="#mwt1">Purge</pre><meta typeof="mw:Annotation/dummyanno/End" about="#mwt1" data-mw='{"wtOffsets":[32,44]}'/> !! end
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | ���֧ߧ֧�ѧ�ڧ� ����ѧߧڧ��: 0.2 |
proxy
|
phpinfo
|
���ѧ����ۧܧ�