Marcoil has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/131730

Change subject: Bug 50587: Serialize DOM template parameters back to wikitext
......................................................................

Bug 50587: Serialize DOM template parameters back to wikitext

Parse transclusion parameters from data-mw:parts.template.params.html
if no wikitext parameter present.

Change-Id: I8e4ec1cf1fb4da10b5bd57b50bd5eff8fc73717f
---
M lib/mediawiki.WikitextSerializer.js
M tests/parserTests.txt
2 files changed, 37 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid 
refs/changes/30/131730/1

diff --git a/lib/mediawiki.WikitextSerializer.js 
b/lib/mediawiki.WikitextSerializer.js
index ca74977..4ea99e5 100644
--- a/lib/mediawiki.WikitextSerializer.js
+++ b/lib/mediawiki.WikitextSerializer.js
@@ -512,7 +512,7 @@
                                                        paramInfo = {};
                                                }
 
-                                               var v = tpl.params[k].wt,
+                                               var value, escapedValue,
                                                        // Default to ' = ' 
spacing. Anything that matches
                                                        // this does not 
remember spc explicitly.
                                                        spc = ['', ' ', ' ', 
''],
@@ -527,22 +527,32 @@
                                                        opts.serializeAsNamed = 
true;
                                                }
 
+                                               // TODO: Other formats? No 
value?
+                                               if (tpl.params[k].wt) {
+                                                       value = 
tpl.params[k].wt;
+                                               } else {
+                                                       value = 
WSP.serializeHTML({
+                                                               env: state.env},
+                                                               
tpl.params[k].html);
+                                               }
+                                               escapedValue = 
serializer.escapeTplArgWT(state, value, opts);
+
                                                if (paramInfo.spc) {
                                                        spc = paramInfo.spc;
                                                } //else {
                                                        // TODO: match the 
space style of other/ parameters!
                                                        //spc = ['', ' ', ' ', 
''];
                                                //}
-                                               var res = 
serializer.escapeTplArgWT(state, v, opts);
-                                               if (res.serializeAsNamed) {
+
+                                               if 
(escapedValue.serializeAsNamed) {
                                                        // Escape as value only
                                                        // Trim WS
-                                                       argBuf.push(spc[0] + k 
+ spc[1] + "=" + spc[2] + res.v.trim() + spc[3]);
+                                                       argBuf.push(spc[0] + k 
+ spc[1] + "=" + spc[2] + escapedValue.v.trim() + spc[3]);
                                                } else {
                                                        numericIndex++;
                                                        // Escape as positional 
parameter
                                                        // No WS trimming
-                                                       argBuf.push(res.v);
+                                                       
argBuf.push(escapedValue.v);
                                                }
                                        };
 
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index 497364a..f28ca29 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -2257,6 +2257,28 @@
 <p about="#mwt1" typeof="mw:Transclusion" 
data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a
 : b","html":"a&lt;span typeof=\"mw:Placeholder\" 
data-parsoid=\"{&amp;quot;src&amp;quot;:&amp;quot; 
&amp;quot;,&amp;quot;isDisplayHack&amp;quot;:true}\">&amp;nbsp;&lt;/span>: 
b"}},"i":0}}]}'>a : b</p>
 !! end
 
+## Bug 50587
+!! test
+Templates: Template parameters from html
+!! options
+parsoid=html2wt
+!! wikitext
+{{echo|{{echo|''foo''}}}}
+!! html/parsoid
+<p><i about="#mwt1" typeof="mw:Transclusion" 
data-mw='{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo&quot;,&quot;href&quot;:&quot;./Template:Echo&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;html&quot;:&quot;&lt;i
 about=\&quot;#mwt2\&quot; typeof=\&quot;mw:Transclusion\&quot; 
data-mw=\&quot;{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;html&amp;quot;:&amp;quot;&amp;lt;i&amp;gt;foo&amp;lt;/i&amp;gt;&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\&quot;&gt;foo&lt;/i&gt;&quot;}},&quot;i&quot;:0}}]}'>foo</i></p>
+!! end
+
+## Bug 50587
+!! test
+Templates: Template parameters from html for parser function
+!! options
+parsoid=html2wt
+!! wikitext
+{{#formatdate:2009-03-24|mdy}}
+!! html/parsoid
+<p><span class="mw-formatted-date" title="2009-03-24" about="#mwt1" 
typeof="mw:Transclusion" 
data-mw='{"parts":[{"template":{"target":{"wt":"#formatdate:2009-03-24","function":"#formatdate"},"params":{"1":{"html":"mdy"}},"i":0}}]}'>March
 24, 2009</span></p>
+!! end
+
 ###
 ### Parsoid-centric tests for testing RT edge cases for pre
 ###

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8e4ec1cf1fb4da10b5bd57b50bd5eff8fc73717f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: dom_tpl_params_4
Gerrit-Owner: Marcoil <marc...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to