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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits