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<span typeof=\"mw:Placeholder\" data-parsoid=\"{&quot;src&quot;:&quot; &quot;,&quot;isDisplayHack&quot;:true}\">&nbsp;</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='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"html":"<i about=\"#mwt2\" 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&gt;foo&lt;/i&gt;&quot;}},&quot;i&quot;:0}}]}\">foo</i>"}},"i":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