jenkins-bot has submitted this change and it was merged.

Change subject: Bug 49739: Use named parameter if value contains '='
......................................................................


Bug 49739: Use named parameter if value contains '='

Fixes this test case:
echo '{{echo|foo}}' | node parse | sed s/foo/f=oo/g | node parse --html2wt
{{echo|1=f=oo}}

Added a test too.

Change-Id: I1619669f7112f8d1738abfe690656b1541e5b107
---
M js/lib/mediawiki.WikitextSerializer.js
M js/tests/parserTests.txt
2 files changed, 20 insertions(+), 4 deletions(-)

Approvals:
  Subramanya Sastry: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/js/lib/mediawiki.WikitextSerializer.js 
b/js/lib/mediawiki.WikitextSerializer.js
index 5d994ac..fbc9b2d 100644
--- a/js/lib/mediawiki.WikitextSerializer.js
+++ b/js/lib/mediawiki.WikitextSerializer.js
@@ -770,9 +770,9 @@
        function escapeStr(str, buf, pos) {
                var bracketPairStrippedStr = str.replace(/\[([^\[\]]*)\]/g, 
'_$1_'),
                        genericMatch =
-                       pos.start && /^{/.test(str) ||
-                       pos.end && /}$/.test(str) ||
-                       /{{|}}|[\[\]\|]/.test(bracketPairStrippedStr);
+                               pos.start && /^{/.test(str) ||
+                               pos.end && /}$/.test(str) ||
+                               /{{|}}|[\[\]\|]/.test(bracketPairStrippedStr);
                if (genericMatch ||
                                // Can't allow '=' in positional parameters
                                (isPositional && /[=]/.test(str)))
@@ -2819,7 +2819,11 @@
                                                        //spc = ['', ' ', ' ', 
''];
                                                //}
 
-                                               if (kSrc === 
numericIndex.toString()) {
+                                               if (kSrc === 
numericIndex.toString() &&
+                                                               // Use named 
serialization if the value
+                                                               // contains a 
'='
+                                                               
!/=/.test(tpl.params[k].wt))
+                                               {
                                                        numericIndex++;
                                                        // Escape as positional 
parameter
                                                        v = 
serializer.escapeTplArgWT(state,
diff --git a/js/tests/parserTests.txt b/js/tests/parserTests.txt
index d837580..f7ebf2c 100644
--- a/js/tests/parserTests.txt
+++ b/js/tests/parserTests.txt
@@ -1804,6 +1804,18 @@
 </pre>
 !! end
 
+!! test
+Parsoid: Serialize positional parameters with = in them as named parameter
+!! options
+parsoid=html2wt
+!! input
+{{echo|1 = f=oo}}
+!! result
+<p about="#mwt1" typeof="mw:Transclusion"
+data-mw='{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"f=oo"}},"i":0}'
+>foo</p>
+!! end
+
 ###
 ### HTML-pre (some to spec PHP parser behavior and some Parsoid-RT-centric)
 ###

-- 
To view, visit https://gerrit.wikimedia.org/r/72876
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I1619669f7112f8d1738abfe690656b1541e5b107
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: GWicke <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to