Marcoil has uploaded a new change for review. https://gerrit.wikimedia.org/r/181250
Change subject: [Cite] Generate the same ids for <ref>s and notes as Cite.php ...................................................................... [Cite] Generate the same ids for <ref>s and notes as Cite.php One particular case is that Cite.php considers equal a name and its encoding, i.e. "a & b" === "a & b". Added a new test for this case, but blacklisted it on html2wt, wt2wt and html2html due to a different problem with how Parsoid encodes entities. This will be investigated separately as a simple fix could break unrelated cases. Also updated tests and blacklist to the new ids. Change-Id: I87637a1dc812a3a8f29327b9e6c0040b22a651c4 --- M lib/ext.Cite.js M tests/parserTests-blacklist.js M tests/parserTests.txt 3 files changed, 119 insertions(+), 80 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid refs/changes/50/181250/1 diff --git a/lib/ext.Cite.js b/lib/ext.Cite.js index ffe92ff..7d1c704 100644 --- a/lib/ext.Cite.js +++ b/lib/ext.Cite.js @@ -8,7 +8,8 @@ var Util = require( './mediawiki.Util.js' ).Util, DU = require( './mediawiki.DOMUtils.js').DOMUtils, coreutil = require('util'), - defines = require('./mediawiki.parser.defines.js'); + defines = require('./mediawiki.parser.defines.js'), + entities = require('entities'); // define some constructor shortcuts var KV = defines.KV, @@ -154,8 +155,10 @@ // Looks like Cite.php doesn't try to fix ids that already have // a "_" in them. Ex: name="a b" and name="a_b" are considered // identical. Not sure if this is a feature or a bug. - // It also encodes them and then substitutes '%' with '.'. - return encodeURIComponent(val.replace(/\s/g, '_')).replace(/%/g, '.'); + // It also considers entities equal to their encoding (i.e. '&' === '&') + // and then substitutes % with . + var v = entities.decodeHTML(val).replace(/\s/g, '_'); + return encodeURIComponent(v).replace(/%/g,"."); } RefGroup.prototype.add = function(references, refName, about, skipLinkback) { @@ -164,25 +167,30 @@ if ( refName && this.indexByName.has( refName ) ) { ref = this.indexByName.get( refName ); } else { + // The ids produced Cite.php have some particulars: + // Simple refs get 'cite_ref-' + index + // Refs with names get 'cite_ref-' + name + '_' + index + (backlink num || 0) + // Notes (references) whose ref doesn't have a name are 'cite_note-' + index + // Notes whose ref has a name are 'cite_note-' + name + '-' + index var n = references.index, - refKey = (1+n) + ''; + refKey = (1+n) + '', + refIdBase = 'cite_ref-' + (refName ? refName + '_' + refKey : refKey), + noteId = 'cite_note-' + (refName ? refName + '-' + refKey : refKey); // bump index references.index += 1; - if (refName) { - refKey = refName + '-' + refKey; - } ref = { about: about, content: null, group: this.name, groupIndex: this.refs.length + 1, index: n, - key: refKey, + key: refIdBase, + id: (refName ? refIdBase + '-0' : refIdBase), linkbacks: [], name: refName, - target: 'cite_note-' + refKey + target: noteId }; this.refs.push( ref ); if (refName) { @@ -191,7 +199,7 @@ } if (!skipLinkback) { - ref.linkbacks.push('cite_ref-' + ref.key + '-' + ref.linkbacks.length); + ref.linkbacks.push(ref.key + '-' + ref.linkbacks.length); } return ref; @@ -222,7 +230,7 @@ if (ref.linkbacks.length === 1) { a = ownerDoc.createElement('a'); DU.addAttributes(a, { - 'href': '#' + ref.linkbacks[0] + 'href': '#' + ref.id }); a.appendChild(arrow); span.appendChild(a); @@ -387,7 +395,8 @@ DU.addAttributes(span, { 'about': about, 'class': 'reference', - 'id': nestedInReferences ? undefined : ref.linkbacks[ref.linkbacks.length - 1], + 'id': nestedInReferences ? undefined : + (ref.name ? ref.linkbacks[ref.linkbacks.length - 1] : ref.id), 'rel': 'dc:references', 'typeof': nodeType }); diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js index 62d3461..1d2d206 100644 --- a/tests/parserTests-blacklist.js +++ b/tests/parserTests-blacklist.js @@ -523,6 +523,7 @@ add("wt2wt", "Ref: 8. transclusion wikitext has lower precedence", "A <ref>foo {{echo|</ref> B C}}\n\n<references />"); add("wt2wt", "Ref: 9. unclosed comments should not leak out of ref-body", "A <ref>foo <!----></ref> B C\n<references />"); add("wt2wt", "Ref: 10. Unclosed HTML tags should not leak out of ref-body", "A <ref><b> foo </ref> B C\n\n<references />"); +add("wt2wt", "Ref: 19. ref-tags with identical name encodings should get identical indexes", "1 <ref name=\"a & b\">foo</ref> 2 <ref name=\"a &amp; b\" />\n\n<references />"); add("wt2wt", "References: 5. ref tags in references should be processed while ignoring all other content", "A <ref name=\"a\" />\nB <ref name=\"b\">bar</ref>\n\n<references>\n<ref name=\"a\">foo</ref>\n</references>"); add("wt2wt", "Entities in ref name", "<ref name=\"test &amp; me\">hi</ref>\n"); add("wt2wt", "Headings: 4a'. No escaping needed (Parsoid bug T84903)", "= ''<nowiki>=</nowiki>''foo= =\n"); @@ -898,12 +899,13 @@ add("html2html", "Gallery override link with malicious javascript (bug 34852)", "<p data-parsoid='{\"dsr\":[0,4,0,0]}'>\t\t* </p><div style=\"width: 155px\" data-parsoid='{\"stx\":\"html\",\"dsr\":[4,239,26,6]}'>\n\t\t\t<div class=\"thumb\" style=\"width: 150px;\" data-parsoid='{\"stx\":\"html\",\"dsr\":[34,182,41,6]}'><div style=\"margin:68px auto;\" data-parsoid='{\"stx\":\"html\",\"dsr\":[75,176,31,6]}'><img src=\"http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg\" alt=\"120px-Foobar.jpg\" rel=\"mw:externalImage\" data-parsoid='{\"dsr\":[106,170,null,null]}'/></div></div>\n\t\t\t<div class=\"gallerytext\" data-parsoid='{\"stx\":\"html\",\"dsr\":[186,230,25,6]}'>\n<p data-parsoid='{\"dsr\":[212,219,0,0]}'>caption</p>\n\n\t\t\t</div>\n\t\t</div>\n"); add("html2html", "Gallery with invalid title as link (bug 43964)", "<p data-parsoid='{\"dsr\":[0,4,0,0]}'>\t\t* </p><div style=\"width: 155px\" data-parsoid='{\"stx\":\"html\",\"dsr\":[4,229,26,6]}'>\n\t\t\t<div class=\"thumb\" style=\"width: 150px;\" data-parsoid='{\"stx\":\"html\",\"dsr\":[34,182,41,6]}'><div style=\"margin:68px auto;\" data-parsoid='{\"stx\":\"html\",\"dsr\":[75,176,31,6]}'><img src=\"http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg\" alt=\"120px-Foobar.jpg\" rel=\"mw:externalImage\" data-parsoid='{\"dsr\":[106,170,null,null]}'/></div></div>\n\t\t\t<div class=\"gallerytext\" data-parsoid='{\"stx\":\"html\",\"dsr\":[186,220,25,6]}'>\t\t\t</div>\n\t\t</div>\n"); add("html2html", "Disable TOC", "<p data-parsoid='{\"dsr\":[0,4,0,0]}'>Lead</p>\n\n<h2 data-parsoid='{\"dsr\":[6,252,2,2]}'> <span class=\"mw-headline\" id=\"Section_1\" data-parsoid='{\"stx\":\"html\",\"dsr\":[9,66,41,7]}'>Section 1</span><span class=\"mw-editsection\" data-parsoid='{\"stx\":\"html\",\"dsr\":[66,249,29,7]}'><span class=\"mw-editsection-bracket\" data-parsoid='{\"stx\":\"html\",\"dsr\":[95,140,37,7]}'>[</span>[/index.php?title=Parser_test&action=edit&section=1 edit]<span class=\"mw-editsection-bracket\" data-parsoid='{\"stx\":\"html\",\"dsr\":[197,242,37,7]}'>]</span></span> </h2>\n\n<h2 data-parsoid='{\"dsr\":[254,500,2,2]}'> <span class=\"mw-headline\" id=\"Section_2\" data-parsoid='{\"stx\":\"html\",\"dsr\":[257,314,41,7]}'>Section 2</span><span class=\"mw-editsection\" data-parsoid='{\"stx\":\"html\",\"dsr\":[314,497,29,7]}'><span class=\"mw-editsection-bracket\" data-parsoid='{\"stx\":\"html\",\"dsr\":[343,388,37,7]}'>[</span>[/index.php?title=Parser_test&action=edit&section=2 edit]<span class=\"mw-editsection-bracket\" data-parsoid='{\"stx\":\"html\",\"dsr\":[445,490,37,7]}'>]</span></span> </h2>\n\n<h2 data-parsoid='{\"dsr\":[502,748,2,2]}'> <span class=\"mw-headline\" id=\"Section_3\" data-parsoid='{\"stx\":\"html\",\"dsr\":[505,562,41,7]}'>Section 3</span><span class=\"mw-editsection\" data-parsoid='{\"stx\":\"html\",\"dsr\":[562,745,29,7]}'><span class=\"mw-editsection-bracket\" data-parsoid='{\"stx\":\"html\",\"dsr\":[591,636,37,7]}'>[</span>[/index.php?title=Parser_test&action=edit&section=3 edit]<span class=\"mw-editsection-bracket\" data-parsoid='{\"stx\":\"html\",\"dsr\":[693,738,37,7]}'>]</span></span> </h2>\n\n<h2 data-parsoid='{\"dsr\":[750,996,2,2]}'> <span class=\"mw-headline\" id=\"Section_4\" data-parsoid='{\"stx\":\"html\",\"dsr\":[753,810,41,7]}'>Section 4</span><span class=\"mw-editsection\" data-parsoid='{\"stx\":\"html\",\"dsr\":[810,993,29,7]}'><span class=\"mw-editsection-bracket\" data-parsoid='{\"stx\":\"html\",\"dsr\":[839,884,37,7]}'>[</span>[/index.php?title=Parser_test&action=edit&section=4 edit]<span class=\"mw-editsection-bracket\" data-parsoid='{\"stx\":\"html\",\"dsr\":[941,986,37,7]}'>]</span></span> </h2>\n\n<h2 data-parsoid='{\"dsr\":[998,1244,2,2]}'> <span class=\"mw-headline\" id=\"Section_5\" data-parsoid='{\"stx\":\"html\",\"dsr\":[1001,1058,41,7]}'>Section 5</span><span class=\"mw-editsection\" data-parsoid='{\"stx\":\"html\",\"dsr\":[1058,1241,29,7]}'><span class=\"mw-editsection-bracket\" data-parsoid='{\"stx\":\"html\",\"dsr\":[1087,1132,37,7]}'>[</span>[/index.php?title=Parser_test&action=edit&section=5 edit]<span class=\"mw-editsection-bracket\" data-parsoid='{\"stx\":\"html\",\"dsr\":[1189,1234,37,7]}'>]</span></span> </h2>\n"); -add("html2html", "Ref: 5. body should accept generic wikitext", "<p data-parsoid='{\"dsr\":[0,81,0,0]}'>A <span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-1-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid=\"{"src":"<ref>This is a '''[[bolded link]]''' and this is a {{echo|transclusion}}\\n</ref>","dsr":[2,81,5,6]}\" data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"This is a <b data-parsoid='{\\\"dsr\\\":[17,38,3,3]}'><a rel=\\\"mw:WikiLink\\\" href=\\\"./Bolded_link\\\" title=\\\"Bolded link\\\" data-parsoid='{\\\"stx\\\":\\\"simple\\\",\\\"a\\\":{\\\"href\\\":\\\"./Bolded_link\\\"},\\\"sa\\\":{\\\"href\\\":\\\"bolded link\\\"},\\\"dsr\\\":[20,35,2,2]}'>bolded link</a></b> and this is a <span about=\\\"#mwt3\\\" typeof=\\\"mw:Transclusion\\\" data-parsoid='{\\\"pi\\\":[[{\\\"k\\\":\\\"1\\\",\\\"spc\\\":[\\\"\\\",\\\"\\\",\\\"\\\",\\\"\\\"]}]],\\\"dsr\\\":[53,74,null,null]}' data-mw='{\\\"parts\\\":[{\\\"template\\\":{\\\"target\\\":{\\\"wt\\\":\\\"echo\\\",\\\"href\\\":\\\"./Template:Echo\\\"},\\\"params\\\":{\\\"1\\\":{\\\"wt\\\":\\\"transclusion\\\"}},\\\"i\\\":0}}]}'>transclusion</span>\\n\"},\"attrs\":{}}'><a href=\"#cite_note-1\">[1]</a></span></p>\n\n<ol class=\"references\" typeof=\"mw:Extension/references\" about=\"#mwt5\" data-parsoid='{\"src\":\"<references />\",\"dsr\":[83,97,2,2]}' data-mw='{\"name\":\"references\",\"attrs\":{}}'><li about=\"#cite_note-1\" id=\"cite_note-1\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-1-0\">↑</a></span> This is a <b><a rel=\"mw:WikiLink\" href=\"./Bolded_link\" title=\"Bolded link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Bolded_link\"},\"sa\":{\"href\":\"bolded link\"},\"dsr\":[20,35,2,2]}'>bolded link</a></b> and this is a <span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[53,74,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"transclusion\"}},\"i\":0}}]}'>transclusion</span>\n</li></ol>"); -add("html2html", "Ref: 7. No p-wrapping in ref-body", "<p data-parsoid='{\"dsr\":[0,30,0,0]}'>A <span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-1-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref>foo\\nbar\\nbaz\\nbooz\\n</ref>\",\"dsr\":[2,30,5,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"foo\\nbar\\nbaz\\nbooz\\n\"},\"attrs\":{}}'><a href=\"#cite_note-1\">[1]</a></span></p>\n\n<ol class=\"references\" typeof=\"mw:Extension/references\" about=\"#mwt4\" data-parsoid='{\"src\":\"<references />\",\"dsr\":[32,46,2,2]}' data-mw='{\"name\":\"references\",\"attrs\":{}}'><li about=\"#cite_note-1\" id=\"cite_note-1\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-1-0\">↑</a></span> foo\nbar\nbaz\nbooz\n</li></ol>"); -add("html2html", "Ref: 8. transclusion wikitext has lower precedence", "<p data-parsoid='{\"dsr\":[0,47,0,0]}'>A <span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-1-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref>foo {{echo|</ref>\",\"dsr\":[2,24,5,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"foo <span typeof=\\\"mw:Nowiki\\\" data-parsoid='{\\\"src\\\":\\\"{{\\\",\\\"dsr\\\":[11,13,0,0]}'>{{</span>echo|\"},\"attrs\":{}}'><a href=\"#cite_note-1\">[1]</a></span> B C<span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[28,47,8,9]}'>}}</span></p>\n<ol class=\"references\" typeof=\"mw:Extension/references\" about=\"#mwt4\" data-parsoid='{\"src\":\"<references />\",\"dsr\":[48,62,2,2]}' data-mw='{\"name\":\"references\",\"attrs\":{}}'><li about=\"#cite_note-1\" id=\"cite_note-1\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-1-0\">↑</a></span> foo <span typeof=\"mw:Nowiki\">{{</span>echo|</li></ol>"); -add("html2html", "Ref: 10. Unclosed HTML tags should not leak out of ref-body", "<p data-parsoid='{\"dsr\":[0,25,0,0]}'>A <span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-1-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref><b> foo </ref>\",\"dsr\":[2,21,5,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"<b data-parsoid='{\\\"stx\\\":\\\"html\\\",\\\"autoInsertedEnd\\\":true,\\\"dsr\\\":[7,15,3,0]}'> foo </b>\"},\"attrs\":{}}'><a href=\"#cite_note-1\">[1]</a></span> B C</p>\n\n<ol class=\"references\" typeof=\"mw:Extension/references\" about=\"#mwt4\" data-parsoid='{\"src\":\"<references />\",\"dsr\":[27,41,2,2]}' data-mw='{\"name\":\"references\",\"attrs\":{}}'><li about=\"#cite_note-1\" id=\"cite_note-1\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-1-0\">↑</a></span> <b data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[7,15,3,0]}'> foo </b></li></ol>"); -add("html2html", "References: 5. ref tags in references should be processed while ignoring all other content", "<p data-parsoid='{\"dsr\":[0,44,0,0]}'>A <span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-a-1-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref name=\\\"a\\\" />\",\"dsr\":[2,18,16,0]}' data-mw='{\"name\":\"ref\",\"attrs\":{\"name\":\"a\"}}'><a href=\"#cite_note-a-1\">[1]</a></span>\nB <span about=\"#mwt4\" class=\"reference\" id=\"cite_ref-b-2-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref name=\\\"b\\\">bar</ref>\",\"dsr\":[21,44,14,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"bar\"},\"attrs\":{\"name\":\"b\"}}'><a href=\"#cite_note-b-2\">[2]</a></span></p>\n\n<ol class=\"references\" typeof=\"mw:Extension/references\" about=\"#mwt6\" data-parsoid='{\"src\":\"<references>\\n<ref name=\\\"a\\\">foo</ref>\\n</references>\",\"dsr\":[46,96,2,2]}' data-mw='{\"name\":\"references\",\"body\":{\"extsrc\":\"<ref name=\\\"a\\\">foo</ref>\",\"html\":\"\\n<span about=\\\"#mwt8\\\" class=\\\"reference\\\" rel=\\\"dc:references\\\" typeof=\\\"mw:Extension/ref\\\" data-parsoid='{\\\"src\\\":\\\"&lt;ref name=\\\\\\\"a\\\\\\\">foo&lt;/ref>\\\",\\\"dsr\\\":[59,82,14,6]}' data-mw='{\\\"name\\\":\\\"ref\\\",\\\"body\\\":{\\\"html\\\":\\\"foo\\\"},\\\"attrs\\\":{\\\"name\\\":\\\"a\\\"}}'><a href=\\\"#cite_note-a-1\\\">[1]</a></span>\\n\"},\"attrs\":{}}'><li about=\"#cite_note-a-1\" id=\"cite_note-a-1\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-a-1-0\">↑</a></span> foo</li><li about=\"#cite_note-b-2\" id=\"cite_note-b-2\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-b-2-0\">↑</a></span> bar</li></ol>"); -add("html2html", "Entities in ref name", "<p data-parsoid='{\"dsr\":[0,38,0,0]}'><span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-test_.26amp.3Bamp.3B_me-1-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref name=\\\"test &amp;amp; me\\\">hi</ref>\",\"dsr\":[0,38,30,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"hi\"},\"attrs\":{\"name\":\"test &amp;amp; me\"}}'><a href=\"#cite_note-test_.26amp.3Bamp.3B_me-1\">[1]</a></span></p>\n"); +add("html2html", "Ref: 5. body should accept generic wikitext", "<p data-parsoid='{\"dsr\":[0,81,0,0]}'>A <span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid=\"{"src":"<ref>This is a '''[[bolded link]]''' and this is a {{echo|transclusion}}\\n</ref>","dsr":[2,81,5,6]}\" data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"This is a <b data-parsoid='{\\\"dsr\\\":[17,38,3,3]}'><a rel=\\\"mw:WikiLink\\\" href=\\\"./Bolded_link\\\" title=\\\"Bolded link\\\" data-parsoid='{\\\"stx\\\":\\\"simple\\\",\\\"a\\\":{\\\"href\\\":\\\"./Bolded_link\\\"},\\\"sa\\\":{\\\"href\\\":\\\"bolded link\\\"},\\\"dsr\\\":[20,35,2,2]}'>bolded link</a></b> and this is a <span about=\\\"#mwt3\\\" typeof=\\\"mw:Transclusion\\\" data-parsoid='{\\\"pi\\\":[[{\\\"k\\\":\\\"1\\\",\\\"spc\\\":[\\\"\\\",\\\"\\\",\\\"\\\",\\\"\\\"]}]],\\\"dsr\\\":[53,74,null,null]}' data-mw='{\\\"parts\\\":[{\\\"template\\\":{\\\"target\\\":{\\\"wt\\\":\\\"echo\\\",\\\"href\\\":\\\"./Template:Echo\\\"},\\\"params\\\":{\\\"1\\\":{\\\"wt\\\":\\\"transclusion\\\"}},\\\"i\\\":0}}]}'>transclusion</span>\\n\"},\"attrs\":{}}'><a href=\"#cite_note-1\">[1]</a></span></p>\n\n<ol class=\"references\" typeof=\"mw:Extension/references\" about=\"#mwt5\" data-parsoid='{\"src\":\"<references />\",\"dsr\":[83,97,2,2]}' data-mw='{\"name\":\"references\",\"attrs\":{}}'><li about=\"#cite_note-1\" id=\"cite_note-1\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-1\">↑</a></span> This is a <b><a rel=\"mw:WikiLink\" href=\"./Bolded_link\" title=\"Bolded link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Bolded_link\"},\"sa\":{\"href\":\"bolded link\"},\"dsr\":[20,35,2,2]}'>bolded link</a></b> and this is a <span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[53,74,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"transclusion\"}},\"i\":0}}]}'>transclusion</span>\n</li></ol>"); +add("html2html", "Ref: 7. No p-wrapping in ref-body", "<p data-parsoid='{\"dsr\":[0,30,0,0]}'>A <span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref>foo\\nbar\\nbaz\\nbooz\\n</ref>\",\"dsr\":[2,30,5,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"foo\\nbar\\nbaz\\nbooz\\n\"},\"attrs\":{}}'><a href=\"#cite_note-1\">[1]</a></span></p>\n\n<ol class=\"references\" typeof=\"mw:Extension/references\" about=\"#mwt4\" data-parsoid='{\"src\":\"<references />\",\"dsr\":[32,46,2,2]}' data-mw='{\"name\":\"references\",\"attrs\":{}}'><li about=\"#cite_note-1\" id=\"cite_note-1\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-1\">↑</a></span> foo\nbar\nbaz\nbooz\n</li></ol>"); +add("html2html", "Ref: 8. transclusion wikitext has lower precedence", "<p data-parsoid='{\"dsr\":[0,47,0,0]}'>A <span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref>foo {{echo|</ref>\",\"dsr\":[2,24,5,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"foo <span typeof=\\\"mw:Nowiki\\\" data-parsoid='{\\\"src\\\":\\\"{{\\\",\\\"dsr\\\":[11,13,0,0]}'>{{</span>echo|\"},\"attrs\":{}}'><a href=\"#cite_note-1\">[1]</a></span> B C<span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[28,47,8,9]}'>}}</span></p>\n<ol class=\"references\" typeof=\"mw:Extension/references\" about=\"#mwt4\" data-parsoid='{\"src\":\"<references />\",\"dsr\":[48,62,2,2]}' data-mw='{\"name\":\"references\",\"attrs\":{}}'><li about=\"#cite_note-1\" id=\"cite_note-1\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-1\">↑</a></span> foo <span typeof=\"mw:Nowiki\">{{</span>echo|</li></ol>"); +add("html2html", "Ref: 10. Unclosed HTML tags should not leak out of ref-body", "<p data-parsoid='{\"dsr\":[0,25,0,0]}'>A <span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref><b> foo </ref>\",\"dsr\":[2,21,5,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"<b data-parsoid='{\\\"stx\\\":\\\"html\\\",\\\"autoInsertedEnd\\\":true,\\\"dsr\\\":[7,15,3,0]}'> foo </b>\"},\"attrs\":{}}'><a href=\"#cite_note-1\">[1]</a></span> B C</p>\n\n<ol class=\"references\" typeof=\"mw:Extension/references\" about=\"#mwt4\" data-parsoid='{\"src\":\"<references />\",\"dsr\":[27,41,2,2]}' data-mw='{\"name\":\"references\",\"attrs\":{}}'><li about=\"#cite_note-1\" id=\"cite_note-1\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-1\">↑</a></span> <b data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[7,15,3,0]}'> foo </b></li></ol>"); +add("html2html", "Ref: 19. ref-tags with identical name encodings should get identical indexes", "<p data-parsoid='{\"dsr\":[0,60,0,0]}'>1 <span about=\"#mwt3\" class=\"reference\" id=\"cite_ref-a_.26_b_1-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref name=\\\"a & b\\\">foo</ref>\",\"dsr\":[2,29,18,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"foo\"},\"attrs\":{\"name\":\"a & b\"}}'><a href=\"#cite_note-a_.26_b-1\">[1]</a></span> 2 <span about=\"#mwt4\" class=\"reference\" id=\"cite_ref-a_.26amp.3B_b_2-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref name=\\\"a &amp;amp; b\\\" />\",\"dsr\":[32,60,28,0]}' data-mw='{\"name\":\"ref\",\"attrs\":{\"name\":\"a &amp;amp; b\"}}'><a href=\"#cite_note-a_.26amp.3B_b-2\">[2]</a></span></p>\n\n<ol class=\"references\" typeof=\"mw:Extension/references\" about=\"#mwt6\" data-parsoid='{\"src\":\"<references />\",\"dsr\":[62,76,2,2]}' data-mw='{\"name\":\"references\",\"attrs\":{}}'><li about=\"#cite_note-a_.26_b-1\" id=\"cite_note-a_.26_b-1\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-a_.26_b_1-0\">↑</a></span> foo</li><li about=\"#cite_note-a_.26amp.3B_b-2\" id=\"cite_note-a_.26amp.3B_b-2\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-a_.26amp.3B_b_2-0\">↑</a></span> </li></ol>"); +add("html2html", "References: 5. ref tags in references should be processed while ignoring all other content", "<p data-parsoid='{\"dsr\":[0,44,0,0]}'>A <span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-a_1-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref name=\\\"a\\\" />\",\"dsr\":[2,18,16,0]}' data-mw='{\"name\":\"ref\",\"attrs\":{\"name\":\"a\"}}'><a href=\"#cite_note-a-1\">[1]</a></span>\nB <span about=\"#mwt4\" class=\"reference\" id=\"cite_ref-b_2-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref name=\\\"b\\\">bar</ref>\",\"dsr\":[21,44,14,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"bar\"},\"attrs\":{\"name\":\"b\"}}'><a href=\"#cite_note-b-2\">[2]</a></span></p>\n\n<ol class=\"references\" typeof=\"mw:Extension/references\" about=\"#mwt6\" data-parsoid='{\"src\":\"<references>\\n<ref name=\\\"a\\\">foo</ref>\\n</references>\",\"dsr\":[46,96,2,2]}' data-mw='{\"name\":\"references\",\"body\":{\"extsrc\":\"<ref name=\\\"a\\\">foo</ref>\",\"html\":\"\\n<span about=\\\"#mwt8\\\" class=\\\"reference\\\" rel=\\\"dc:references\\\" typeof=\\\"mw:Extension/ref\\\" data-parsoid='{\\\"src\\\":\\\"&lt;ref name=\\\\\\\"a\\\\\\\">foo&lt;/ref>\\\",\\\"dsr\\\":[59,82,14,6]}' data-mw='{\\\"name\\\":\\\"ref\\\",\\\"body\\\":{\\\"html\\\":\\\"foo\\\"},\\\"attrs\\\":{\\\"name\\\":\\\"a\\\"}}'><a href=\\\"#cite_note-a-1\\\">[1]</a></span>\\n\"},\"attrs\":{}}'><li about=\"#cite_note-a-1\" id=\"cite_note-a-1\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-a_1-0\">↑</a></span> foo</li><li about=\"#cite_note-b-2\" id=\"cite_note-b-2\"><span rel=\"mw:referencedBy\"><a href=\"#cite_ref-b_2-0\">↑</a></span> bar</li></ol>"); +add("html2html", "Entities in ref name", "<p data-parsoid='{\"dsr\":[0,38,0,0]}'><span about=\"#mwt2\" class=\"reference\" id=\"cite_ref-test_.26amp.3B_me_1-0\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"<ref name=\\\"test &amp;amp; me\\\">hi</ref>\",\"dsr\":[0,38,30,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"hi\"},\"attrs\":{\"name\":\"test &amp;amp; me\"}}'><a href=\"#cite_note-test_.26amp.3B_me-1\">[1]</a></span></p>\n"); add("html2html", "Empty LI and TR nodes should not be stripped from top-level content", "<ul data-parsoid='{\"dsr\":[0,9,0,0]}'><li data-parsoid='{\"dsr\":[0,3,1,0]}'> a</li>\n<li data-parsoid='{\"dsr\":[4,5,1,0]}'></li>\n<li data-parsoid='{\"dsr\":[6,9,1,0]}'> b</li></ul>\n\n<table data-parsoid='{\"dsr\":[11,26,2,2]}'>\n\n<tbody data-parsoid='{\"dsr\":[15,24,0,0]}'><tr data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[15,22,2,0]}'>\n<td data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[18,22,1,0]}'>foo</td></tr>\n\n</tbody></table>\n"); add("html2html", "Headings: 6a. Heading chars in SOL context (with trailing spaces)", "<p data-parsoid='{\"dsr\":[0,20,0,0]}'><span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[0,20,8,9]}'>=a=</span></p>\n\n<p data-parsoid='{\"dsr\":[22,42,0,0]}'><span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[22,42,8,9]}'>=a=</span></p> \n\n<p data-parsoid='{\"dsr\":[45,65,0,0]}'><span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[45,65,8,9]}'>=a=</span></p>\t\n\n<p data-parsoid='{\"dsr\":[68,88,0,0]}'><span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[68,88,8,9]}'>=a=</span></p> \t\n"); add("html2html", "Headings: 6b. Heading chars in SOL context (with trailing newlines)", "<p data-parsoid='{\"dsr\":[0,22,0,0]}'><span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[0,22,8,9]}'>=a=\nb</span></p>\n\n<p data-parsoid='{\"dsr\":[24,47,0,0]}'><span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[24,47,8,9]}'>=a= \nb</span></p>\n\n<p data-parsoid='{\"dsr\":[49,72,0,0]}'><span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[49,72,8,9]}'>=a=\t\nb</span></p>\n\n<p data-parsoid='{\"dsr\":[74,98,0,0]}'><span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[74,98,8,9]}'>=a=\t \nb</span></p>\n"); @@ -1753,6 +1755,7 @@ add("html2wt", "Ref: 8. transclusion wikitext has lower precedence", "A <ref>foo {{echo|</ref> B C<nowiki>}}</nowiki>\n<references />"); add("html2wt", "Ref: 9. unclosed comments should not leak out of ref-body", "A <ref>foo <!----></ref> B C\n<references />"); add("html2wt", "Ref: 10. Unclosed HTML tags should not leak out of ref-body", "A <ref><b> foo </ref> B C\n\n<references />"); +add("html2wt", "Ref: 19. ref-tags with identical name encodings should get identical indexes", "1 <ref name=\"a & b\">foo</ref> 2 <ref name=\"a &amp; b\" />\n\n<references />"); add("html2wt", "References: 5. ref tags in references should be processed while ignoring all other content", "A <ref name=\"a\" />\nB <ref name=\"b\">bar</ref>\n\n<references>\n<ref name=\"a\">foo</ref>\n</references>"); add("html2wt", "Entities in ref name", "<ref name=\"test &amp; me\">hi</ref>\n"); add("html2wt", "Empty LI and TR nodes should not be stripped from top-level content", "* a\n*\n* b\n\n{|\n\n|-\n|foo\n\n|}\n"); @@ -2764,6 +2767,18 @@ add("selser", "Ref: 10. Unclosed HTML tags should not leak out of ref-body [[2,0,0],2,0]", "3i2udpyjqgehr529A <ref> <b> foo </ref> B C\n\n04ufs7jtgivsra4i\n\n<references />"); add("selser", "Ref: 10. Unclosed HTML tags should not leak out of ref-body [0,4,0]", "A <ref> <b> foo </ref> B C\n\nexksatqzwpgsc3di<references />"); add("selser", "Ref: 10. Unclosed HTML tags should not leak out of ref-body [[0,0,4],3,0]", "A <ref> <b> foo </ref>3ds74snl9wly2e29<references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [[2,0,4,0],0,0]", "0dpatm9gsbqk6gvi1 <ref name=\"a & b\">foo</ref>k0yidhh5u2b21emi<ref name=\"a & b\" />\n\n<references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [2,0,0]", "zmmmjlha7xim5cdi\n\n1 <ref name=\"a & b\">foo</ref> 2 <ref name=\"a & b\" />\n\n<references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [1,0,0]", "1 <ref name=\"a & b\">foo</ref> 2 <ref name=\"a & b\" />\n\n<references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [[3,0,2,0],0,0]", "<ref name=\"a & b\">foo</ref>4xwpzmnvwlqy3nmi 2 <ref name=\"a & b\" />\n\n<references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [[4,0,0,0],3,0]", "7i0zzbh4nhdm42t9<ref name=\"a & b\">foo</ref> 2 <ref name=\"a & b\" /><references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [[2,0,0,0],0,0]", "hjhp2d26mvqs38fr1 <ref name=\"a & b\">foo</ref> 2 <ref name=\"a & b\" />\n\n<references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [[4,0,4,0],3,0]", "zd9k828z9kiysyvi<ref name=\"a & b\">foo</ref>q33pirp3a9yhkt9<ref name=\"a & b\" /><references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [1,4,0]", "1 <ref name=\"a & b\">foo</ref> 2 <ref name=\"a & b\" />\n\n8k7rhm4hx2a3v7vi<references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [[0,0,2,0],4,0]", "1 <ref name=\"a & b\">foo</ref>23hldhtd8azfflxr 2 <ref name=\"a & b\" />\n\nemqs1xn2p292uik9<references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [2,2,0]", "xggq2fn27fxq1tt9\n\n1 <ref name=\"a & b\">foo</ref> 2 <ref name=\"a & b\" />\n\na8895s490fnu3di\n\n<references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [[0,0,2,0],2,0]", "1 <ref name=\"a & b\">foo</ref>68etayk44yhqia4i 2 <ref name=\"a & b\" />\n\njzslhat3ryrjm7vi\n\n<references />"); +add("selser", "Ref: 19. ref-tags with identical name encodings should get identical indexes [[2,0,0,0],4,0]", "uon9m0ns960f6r1 <ref name=\"a & b\">foo</ref> 2 <ref name=\"a & b\" />\n\njhjx2ypla5v4e7b9<references />"); add("selser", "References: 5. ref tags in references should be processed while ignoring all other content [3,2,0]", "in8j4tbs99qz1tt9\n\n<references>\n<ref name=\"a\">foo</ref>\nThis should just get lost.\n</references>"); add("selser", "References: 5. ref tags in references should be processed while ignoring all other content [4,3,0]", "meym79sw6mv7k3xr<references>\n<ref name=\"a\">foo</ref>\nThis should just get lost.\n</references>"); add("selser", "References: 5. ref tags in references should be processed while ignoring all other content [4,2,0]", "pelj4uzr3bs2a9k9\n\nu67k5swfctk2o6r\n\n<references>\n<ref name=\"a\">foo</ref>\nThis should just get lost.\n</references>"); diff --git a/tests/parserTests.txt b/tests/parserTests.txt index 964203b..77a6631 100644 --- a/tests/parserTests.txt +++ b/tests/parserTests.txt @@ -19406,9 +19406,9 @@ B <ref name="x">foo</ref> C <ref name="y" /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> -B <span about="#mwt4" class="reference" id="cite_ref-x-2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}'><a href="#cite_note-x-2">[2]</a></span> -C <span about="#mwt6" class="reference" id="cite_ref-y-3-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"y"}}'><a href="#cite_note-y-3">[3]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> +B <span about="#mwt4" class="reference" id="cite_ref-x_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}'><a href="#cite_note-x-2">[2]</a></span> +C <span about="#mwt6" class="reference" id="cite_ref-y_3-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"y"}}'><a href="#cite_note-y-3">[3]</a></span></p> !!end !!test @@ -19419,8 +19419,8 @@ A <ref name="x">foo</ref> B <ref name="x" /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-x-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}'><a href="#cite_note-x-1">[1]</a></span> -B <span about="#mwt4" class="reference" id="cite_ref-x-1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="#cite_note-x-1">[1]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-x_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}'><a href="#cite_note-x-1">[1]</a></span> +B <span about="#mwt4" class="reference" id="cite_ref-x_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="#cite_note-x-1">[1]</a></span></p> !!end !!test @@ -19432,9 +19432,9 @@ B <ref name=" x " /> C <ref name= x /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-x-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}'><a href="#cite_note-x-1">[1]</a></span> -B <span about="#mwt4" class="reference" id="cite_ref-x-1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="#cite_note-x-1">[1]</a></span> -C <span about="#mwt6" class="reference" id="cite_ref-x-1-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="#cite_note-x-1">[1]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-x_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}'><a href="#cite_note-x-1">[1]</a></span> +B <span about="#mwt4" class="reference" id="cite_ref-x_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="#cite_note-x-1">[1]</a></span> +C <span about="#mwt6" class="reference" id="cite_ref-x_1-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"x"}}'><a href="#cite_note-x-1">[1]</a></span></p> !!end # NOTE: constructor is a predefined property in JS and constructor as a ref-name can clash with it if not handled properly) @@ -19445,7 +19445,7 @@ !! wikitext A <ref name="constructor">foo</ref> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-constructor-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"constructor"}}'><a href="#cite_note-constructor-1">[1]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-constructor_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"constructor"}}'><a href="#cite_note-constructor-1">[1]</a></span></p> !!end !!test @@ -19459,10 +19459,10 @@ <references /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"This is a <b data-parsoid='{\"dsr\":[19,40,3,3]}'><a rel=\"mw:WikiLink\" href=\"./Bolded_link\" title=\"Bolded link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Bolded_link\"},\"sa\":{\"href\":\"bolded link\"},\"dsr\":[22,37,2,2]}'>bolded link</a></b> and this is a <span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[55,76,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"transclusion\"}},\"i\":0}}]}'>transclusion</span>\n"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"This is a <b data-parsoid='{\"dsr\":[19,40,3,3]}'><a rel=\"mw:WikiLink\" href=\"./Bolded_link\" title=\"Bolded link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Bolded_link\"},\"sa\":{\"href\":\"bolded link\"},\"dsr\":[22,37,2,2]}'>bolded link</a></b> and this is a <span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[55,76,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"transclusion\"}},\"i\":0}}]}'>transclusion</span>\n"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> <ol class="references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'> -<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> This is a <b><a rel="mw:WikiLink" href="./Bolded_link" title="Bolded link">bolded link</a></b> and this is a <span about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"transclusion"}},"i":0}}]}'>transclusion</span> +<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> This is a <b><a rel="mw:WikiLink" href="./Bolded_link" title="Bolded link">bolded link</a></b> and this is a <span about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"transclusion"}},"i":0}}]}'>transclusion</span> </li> </ol> !!end @@ -19480,10 +19480,10 @@ <references /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo\n bar\n baz\n"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo\n bar\n baz\n"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> <ol class="references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> -<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo +<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> foo bar baz </li> @@ -19510,10 +19510,10 @@ <references /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo\n\nbar\n\n\nbaz\n\n\n\nbooz\n"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo\n\nbar\n\n\nbaz\n\n\n\nbooz\n"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> <ol class="references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> -<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo +<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> foo bar @@ -19536,9 +19536,9 @@ <references /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo <span typeof=\"mw:Nowiki\" data-parsoid='{\"src\":\"{{\",\"dsr\":[12,14,0,0]}'>{{</span>echo|"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> B C<span typeof="mw:Nowiki">}}</span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo <span typeof=\"mw:Nowiki\" data-parsoid='{\"src\":\"{{\",\"dsr\":[12,14,0,0]}'>{{</span>echo|"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> B C<span typeof="mw:Nowiki">}}</span></p> <ol class="references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> -<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo <span typeof="mw:Nowiki">{{</span>echo|</li> +<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> foo <span typeof="mw:Nowiki">{{</span>echo|</li> </ol> !!end @@ -19550,9 +19550,9 @@ A <ref> foo <!--</ref> B C <references /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo <!---->"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> B C</p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo <!---->"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> B C</p> <ol class="references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> -<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo <!----></li> +<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> foo <!----></li> </ol> !!end @@ -19565,11 +19565,11 @@ <references /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"<b data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[8,16,3,0]}'> foo </b>"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> B C</p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"<b data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[8,16,3,0]}'> foo </b>"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> B C</p> <ol class="references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> -<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> <b data-parsoid='{"stx":"html","autoInsertedEnd":true}'> foo </b></li> +<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> <b data-parsoid='{"stx":"html","autoInsertedEnd":true}'> foo </b></li> </ol> !!end @@ -19581,8 +19581,8 @@ A <ref>foo</ref> B C <ref>bar</ref> D !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> B -C <span about="#mwt4" class="reference" id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{}}'><a href="#cite_note-2">[2]</a></span> D</p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> B +C <span about="#mwt4" class="reference" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{}}'><a href="#cite_note-2">[2]</a></span> D</p> !!end !!test @@ -19600,8 +19600,8 @@ <p><!--the newline at the end of this line moves out of the p-tag-->a</p> -<p>b<!--the newline at the end of this line stays inside the p-tag--> <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{}}'><a href="#cite_note-1">[1]</a></span> -<span about="#mwt4" class="reference" id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{}}'><a href="#cite_note-2">[2]</a></span></p> +<p>b<!--the newline at the end of this line stays inside the p-tag--> <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{}}'><a href="#cite_note-1">[1]</a></span> +<span about="#mwt4" class="reference" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{}}'><a href="#cite_note-2">[2]</a></span></p> <p>c</p> !!end @@ -19615,8 +19615,8 @@ <ref>bar </ref> B !! html -<p><span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> A -<span about="#mwt4" class="reference" id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar\n"},"attrs":{}}'><a href="#cite_note-2">[2]</a></span> B</p> +<p><span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> A +<span about="#mwt4" class="reference" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar\n"},"attrs":{}}'><a href="#cite_note-2">[2]</a></span> B</p> !!end !!test @@ -19628,10 +19628,10 @@ <references /> !! html -<p><span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo &lt;ref>bar&lt;/ref> baz"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> +<p><span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo &lt;ref>bar&lt;/ref> baz"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> <ol class="references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'> -<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo <ref>bar</ref> baz</li> +<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> foo <ref>bar</ref> baz</li> </ol> !!end @@ -19645,10 +19645,10 @@ <references /> !! html -<p>A1 <span about="#mwt3" class="reference" id="cite_ref-a-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"a"}}'><a href="#cite_note-a-1">[1]</a></span> A2 <span about="#mwt4" class="reference" id="cite_ref-a-1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"a"}}'><a href="#cite_note-a-1">[1]</a></span> -B1 <span about="#mwt7" class="reference" id="cite_ref-b-2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"b"}}'><a href="#cite_note-b-2">[2]</a></span> B2 <span about="#mwt8" class="reference" id="cite_ref-b-2-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"name":"b"}}'><a href="#cite_note-b-2">[2]</a></span></p> +<p>A1 <span about="#mwt3" class="reference" id="cite_ref-a_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"a"}}'><a href="#cite_note-a-1">[1]</a></span> A2 <span about="#mwt4" class="reference" id="cite_ref-a_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"a"}}'><a href="#cite_note-a-1">[1]</a></span> +B1 <span about="#mwt7" class="reference" id="cite_ref-b_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"b"}}'><a href="#cite_note-b-2">[2]</a></span> B2 <span about="#mwt8" class="reference" id="cite_ref-b_2-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"name":"b"}}'><a href="#cite_note-b-2">[2]</a></span></p> -<ol class="references" typeof="mw:Extension/references" about="#mwt10" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-a-1" id="cite_note-a-1"><span rel="mw:referencedBy">↑ <a href="#cite_ref-a-1-0">1.0</a> <a href="#cite_ref-a-1-1">1.1</a></span> foo</li><li about="#cite_note-b-2" id="cite_note-b-2"><span rel="mw:referencedBy">↑ <a href="#cite_ref-b-2-0">2.0</a> <a href="#cite_ref-b-2-1">2.1</a></span> bar</li> +<ol class="references" typeof="mw:Extension/references" about="#mwt10" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-a-1" id="cite_note-a-1"><span rel="mw:referencedBy">↑ <a href="#cite_ref-a_1-0">1.0</a> <a href="#cite_ref-a_1-1">1.1</a></span> foo</li><li about="#cite_note-b-2" id="cite_note-b-2"><span rel="mw:referencedBy">↑ <a href="#cite_ref-b_2-0">2.0</a> <a href="#cite_ref-b_2-1">2.1</a></span> bar</li> </ol> !!end @@ -19662,10 +19662,10 @@ <references /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> <ol class="references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> -<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo</li></ol> +<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> foo</li></ol> !!end !!test @@ -19677,11 +19677,11 @@ <references /> !!html -<p><span class="reference" id="cite_ref-a_b-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"a b"}}'><a href="#cite_note-a_b-1">[1]</a></span> +<p><span class="reference" id="cite_ref-a_b_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"a b"}}'><a href="#cite_note-a_b-1">[1]</a></span> </p> <ol class="references" typeof="mw:Extension/references" data-mw='{"name":"references","attrs":{}}'> -<li id="cite_note-a_b-1"><span rel="mw:referencedBy"><a href="#cite_ref-a_b-1-0">↑</a></span> foo</li> +<li id="cite_note-a_b-1"><span rel="mw:referencedBy"><a href="#cite_ref-a_b_1-0">↑</a></span> foo</li> !!end !!test @@ -19693,11 +19693,26 @@ <references /> !!html -<p><span class="reference" id="cite_ref-.7B.7Becho.7Ca.7D.7D-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"{{echo|a}}"}}'><a href="#cite_note-.7B.7Becho.7Ca.7D.7D-1">[1]</a></span> +<p><span class="reference" id="cite_ref-.7B.7Becho.7Ca.7D.7D_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"{{echo|a}}"}}'><a href="#cite_note-.7B.7Becho.7Ca.7D.7D-1">[1]</a></span> </p> <ol class="references" typeof="mw:Extension/references" data-mw='{"name":"references","attrs":{}}'> -<li id="cite_note-.7B.7Becho.7Ca.7D.7D-1"><span rel="mw:referencedBy"><a href="#cite_ref-.7B.7Becho.7Ca.7D.7D-1-0">↑</a></span> foo</li> +<li id="cite_note-.7B.7Becho.7Ca.7D.7D-1"><span rel="mw:referencedBy"><a href="#cite_ref-.7B.7Becho.7Ca.7D.7D_1-0">↑</a></span> foo</li> +!!end + +!!test +Ref: 19. ref-tags with identical name encodings should get identical indexes +!!options +parsoid +!! wikitext +1 <ref name="a & b">foo</ref> 2 <ref name="a & b" /> + +<references /> +!! html +<p>1 <span about="#mwt3" class="reference" id="cite_ref-a_.26_b_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"a & b"}}'><a href="#cite_note-a_.26_b-1">[1]</a></span> 2 <span about="#mwt4" class="reference" id="cite_ref-a_.26_b_1-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"a &amp; b"}}'><a href="#cite_note-a_.26_b-1">[1]</a></span> + +<ol class="references" typeof="mw:Extension/references" about="#mwt10" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-a_.26_b-1" id="cite_note-a_.26_b-1"><span rel="mw:referencedBy">↑ <a href="#cite_ref-a_.26_b_1-0">1.0</a> <a href="#cite_ref-a_.26_b_1-1">1.1</a></span> foo</li> +</ol> !!end !!test @@ -19720,10 +19735,10 @@ <references group="a" /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"group":"a"}}'><a href="#cite_note-1">[a 1]</a></span> -B <span about="#mwt4" class="reference" id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"group":"b"}}'><a href="#cite_note-2">[b 1]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"group":"a"}}'><a href="#cite_note-1">[a 1]</a></span> +B <span about="#mwt4" class="reference" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"group":"b"}}'><a href="#cite_note-2">[b 1]</a></span></p> -<ol class="references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{"group":"a"}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo</li> +<ol class="references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{"group":"a"}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> foo</li> </ol> !!end @@ -19740,14 +19755,14 @@ <references /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> -<ol class="references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo</li> +<ol class="references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> foo</li> </ol> -<p>B <span about="#mwt6" class="reference" id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{}}'><a href="#cite_note-2">[1]</a></span></p> +<p>B <span about="#mwt6" class="reference" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{}}'><a href="#cite_note-2">[1]</a></span></p> -<ol class="references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-2" id="cite_note-2"><span rel="mw:referencedBy"><a href="#cite_ref-2-0">↑</a></span> bar</li> +<ol class="references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-2" id="cite_note-2"><span rel="mw:referencedBy"><a href="#cite_ref-2">↑</a></span> bar</li> </ol> !!end @@ -19765,15 +19780,15 @@ <references /> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"afoo"},"attrs":{"group":"a"}}'><a href="#cite_note-1">[a 1]</a></span> -B <span about="#mwt4" class="reference" id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bfoo"},"attrs":{}}'><a href="#cite_note-2">[1]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"afoo"},"attrs":{"group":"a"}}'><a href="#cite_note-1">[a 1]</a></span> +B <span about="#mwt4" class="reference" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bfoo"},"attrs":{}}'><a href="#cite_note-2">[1]</a></span></p> -<ol class="references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{"group":"a"}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> afoo</li> +<ol class="references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{"group":"a"}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> afoo</li> </ol> -<p>C <span about="#mwt8" class="reference" id="cite_ref-3-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"cfoo"},"attrs":{}}'><a href="#cite_note-3">[2]</a></span></p> +<p>C <span about="#mwt8" class="reference" id="cite_ref-3" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"cfoo"},"attrs":{}}'><a href="#cite_note-3">[2]</a></span></p> -<ol class="references" typeof="mw:Extension/references" about="#mwt10" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-2" id="cite_note-2"><span rel="mw:referencedBy"><a href="#cite_ref-2-0">↑</a></span> bfoo</li><li about="#cite_note-3" id="cite_note-3"><span rel="mw:referencedBy"><a href="#cite_ref-3-0">↑</a></span> cfoo</li> +<ol class="references" typeof="mw:Extension/references" about="#mwt10" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-2" id="cite_note-2"><span rel="mw:referencedBy"><a href="#cite_ref-2">↑</a></span> bfoo</li><li about="#cite_note-3" id="cite_note-3"><span rel="mw:referencedBy"><a href="#cite_ref-3">↑</a></span> cfoo</li> </ol> !!end @@ -19790,11 +19805,11 @@ This should just get lost. </references> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-a-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"a"}}'><a href="#cite_note-a-1">[1]</a></span> -B <span about="#mwt4" class="reference" id="cite_ref-b-2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"name":"b"}}'><a href="#cite_note-b-2">[2]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-a_1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"name":"a"}}'><a href="#cite_note-a-1">[1]</a></span> +B <span about="#mwt4" class="reference" id="cite_ref-b_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"name":"b"}}'><a href="#cite_note-b-2">[2]</a></span></p> -<ol class="references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","body":{"extsrc":"<ref name=\"a\">foo</ref>\nThis should just get lost.","html":"\n<span about=\"#mwt8\" class=\"reference\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"&lt;ref name=\\\"a\\\">foo&lt;/ref>\",\"dsr\":[59,82,14,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"foo\"},\"attrs\":{\"name\":\"a\"}}'><a href=\"#cite_note-a-1\">[1]</a></span>\n"},"attrs":{}}'><li about="#cite_note-a-1" id="cite_note-a-1"><span rel="mw:referencedBy"><a href="#cite_ref-a-1-0">↑</a></span> foo</li><li about="#cite_note-b-2" id="cite_note-b-2"><span rel="mw:referencedBy"><a href="#cite_ref-b-2-0">↑</a></span> bar</li> +<ol class="references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","body":{"extsrc":"<ref name=\"a\">foo</ref>\nThis should just get lost.","html":"\n<span about=\"#mwt8\" class=\"reference\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"&lt;ref name=\\\"a\\\">foo&lt;/ref>\",\"dsr\":[59,82,14,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"foo\"},\"attrs\":{\"name\":\"a\"}}'><a href=\"#cite_note-a-1\">[1]</a></span>\n"},"attrs":{}}'><li about="#cite_note-a-1" id="cite_note-a-1"><span rel="mw:referencedBy"><a href="#cite_ref-a_1-0">↑</a></span> foo</li><li about="#cite_note-b-2" id="cite_note-b-2"><span rel="mw:referencedBy"><a href="#cite_ref-b_2-0">↑</a></span> bar</li> </ol> !!end @@ -19805,7 +19820,7 @@ !! wikitext <ref>Foo</ref> {{echo|<references />}} !! html -<p><span about="#mwt3" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"Foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> <ol class="references" typeof="mw:Extension/references mw:Transclusion" about="#mwt4" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<references />"}},"i":0}}]}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> Foo</li></ol> +<p><span about="#mwt3" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"Foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> <ol class="references" typeof="mw:Extension/references mw:Transclusion" about="#mwt4" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<references />"}},"i":0}}]}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> Foo</li></ol> !!end !! test @@ -19822,12 +19837,12 @@ <ref name="b">foo</ref> </references> !! html -<p>A <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo bar for a"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> -B <span about="#mwt4" class="reference" id="cite_ref-b-2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"group":"X","name":"b"}}'><a href="#cite_note-b-2">[X 1]</a></span></p> +<p>A <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo bar for a"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> +B <span about="#mwt4" class="reference" id="cite_ref-b_2-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{"group":"X","name":"b"}}'><a href="#cite_note-b-2">[X 1]</a></span></p> -<ol class="references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo bar for a</li></ol> +<ol class="references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> foo bar for a</li></ol> -<ol class="references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","body":{"extsrc":"<ref name=\"b\">foo</ref>","html":"\n<span about=\"#mwt10\" class=\"reference\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"&lt;ref name=\\\"b\\\">foo&lt;/ref>\",\"dsr\":[96,119,14,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"foo\"},\"attrs\":{\"name\":\"b\"}}'><a href=\"#cite_note-b-2\">[X 1]</a></span>\n"},"attrs":{"group":"X"}}'><li about="#cite_note-b-2" id="cite_note-b-2"><span rel="mw:referencedBy"><a href="#cite_ref-b-2-0">↑</a></span> foo</li></ol> +<ol class="references" typeof="mw:Extension/references" about="#mwt8" data-mw='{"name":"references","body":{"extsrc":"<ref name=\"b\">foo</ref>","html":"\n<span about=\"#mwt10\" class=\"reference\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"src\":\"&lt;ref name=\\\"b\\\">foo&lt;/ref>\",\"dsr\":[96,119,14,6]}' data-mw='{\"name\":\"ref\",\"body\":{\"html\":\"foo\"},\"attrs\":{\"name\":\"b\"}}'><a href=\"#cite_note-b-2\">[X 1]</a></span>\n"},"attrs":{"group":"X"}}'><li about="#cite_note-b-2" id="cite_note-b-2"><span rel="mw:referencedBy"><a href="#cite_ref-b_2-0">↑</a></span> foo</li></ol> !! end !! test @@ -19837,7 +19852,7 @@ !! wikitext <ref name="test & me">hi</ref> !! html -<p><span about="#mwt2" class="reference" id="cite_ref-test_.26amp.3B_me-1-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref name=\"test &amp; me\">hi</ref>"}' data-mw='{"name":"ref","body":{"html":"hi"},"attrs":{"name":"test &amp; me"}}'><a href="#cite_note-test_.26amp.3B_me-1">[1]</a></span></p> +<p><span about="#mwt2" class="reference" id="cite_ref-test_.26_me_1-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref name=\"test &amp; me\">hi</ref>"}' data-mw='{"name":"ref","body":{"html":"hi"},"attrs":{"name":"test &amp; me"}}'><a href="#cite_note-test_.26_me-1">[1]</a></span></p> !! end # This test is wt2html only because we're permitting the serializer to produce @@ -19851,11 +19866,11 @@ <references> !! html -<p>a<span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> +<p>a<span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> <ol class="references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'> -<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo</li></ol> +<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> foo</li></ol> !! end !! test @@ -21154,7 +21169,7 @@ foo <ref>''a'' b</ref> !! html -<p>foo <span about="#mwt2" class="reference" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"<i data-parsoid='{\"dsr\":[9,14,2,2]}'>a</i>\n b"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> +<p>foo <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"html":"<i data-parsoid='{\"dsr\":[9,14,2,2]}'>a</i>\n b"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span></p> !! end !! test -- To view, visit https://gerrit.wikimedia.org/r/181250 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I87637a1dc812a3a8f29327b9e6c0040b22a651c4 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: Marcoil <marc...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits