jenkins-bot has submitted this change and it was merged.
Change subject: Handle entities properly while escaping template args
......................................................................
Handle entities properly while escaping template args
* {{echo|–}} was serializing back to {{echo|–}} because
the content in mw:Entity span is the decoded entity rather
than original source.
* Added a parsoid-specific test to catch regressions.
Change-Id: I6063e93aebfe656641c714939a5962f2004cc346
---
M js/lib/mediawiki.WikitextSerializer.js
M js/lib/pegTokenizer.pegjs.txt
M js/tests/parserTests.txt
3 files changed, 23 insertions(+), 2 deletions(-)
Approvals:
GWicke: Looks good to me, approved
jenkins-bot: Verified
diff --git a/js/lib/mediawiki.WikitextSerializer.js
b/js/lib/mediawiki.WikitextSerializer.js
index 80d220f..b917851 100644
--- a/js/lib/mediawiki.WikitextSerializer.js
+++ b/js/lib/mediawiki.WikitextSerializer.js
@@ -789,6 +789,17 @@
var buf = [];
for (var i = 0, n = tokens.length; i < n; i++) {
var t = tokens[i], da = t.dataAttribs;
+
+ // For mw:Entity spans, the opening and closing tags have 0
width
+ // and the enclosed content is the decoded entity. Hence the
+ // special case to serialize back the entity's source.
+ if (t.constructor === pd.TagTk && t.getAttribute("typeof") ===
"mw:Entity") {
+ i += 2;
+ var endTag = tokens[i];
+ buf.push(arg.substring(da.tsr[0],
endTag.dataAttribs.tsr[1]));
+ continue;
+ }
+
switch (t.constructor) {
case pd.TagTk:
case pd.EndTagTk:
diff --git a/js/lib/pegTokenizer.pegjs.txt b/js/lib/pegTokenizer.pegjs.txt
index 7a1f6c3..1c93a2b 100644
--- a/js/lib/pegTokenizer.pegjs.txt
+++ b/js/lib/pegTokenizer.pegjs.txt
@@ -2131,7 +2131,7 @@
return [
new TagTk( 'span', [ new KV( 'typeof', 'mw:Placeholder' ) ],
{ src: ' ', tsr: [pos0, pos0] } ),
"\u00a0",
- new EndTagTk( 'span', [], { src: ' ', tsr: [pos, pos] } )
+ new EndTagTk( 'span', [], { tsr: [pos, pos] } )
];
}
/ t:text_char )+
diff --git a/js/tests/parserTests.txt b/js/tests/parserTests.txt
index 2f3cb53..3741e91 100644
--- a/js/tests/parserTests.txt
+++ b/js/tests/parserTests.txt
@@ -898,6 +898,16 @@
</p>
!! end
+!! test
+Entities inside template parameters
+!! options
+parsoid
+!! input
+{{echo|–}}
+!! result
+<p><span typeof="mw:Transclusion mw:Entity"
data-mw='{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&ndash;"}},"i":0}'>–</span>
+</p>
+!! end
###
### Comments
@@ -15901,7 +15911,7 @@
!!end
!! test
-Image: Modyfing size of an imge
+Image: Modifying size of an imge
!! options
parsoid=html2wt
!! input
--
To view, visit https://gerrit.wikimedia.org/r/71311
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I6063e93aebfe656641c714939a5962f2004cc346
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: GWicke <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits