Marcoil has uploaded a new change for review.

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

Change subject: Don't use data-parsoid.src to serialize magicword page 
properties
......................................................................

Don't use data-parsoid.src to serialize magicword page properties

Fixes regressions introduced by stripping data-parsoid.src in
32d603d3a6b234437e8bc8a721240f179b66d629.

Change-Id: If7cbb1a3027dcf62dea446742823a1c6ddfa00a5
---
M lib/dom.cleanup.js
M lib/wts.TagHandlers.js
M tests/parserTests.txt
3 files changed, 21 insertions(+), 11 deletions(-)


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

diff --git a/lib/dom.cleanup.js b/lib/dom.cleanup.js
index 29f91fd..c7647c0 100644
--- a/lib/dom.cleanup.js
+++ b/lib/dom.cleanup.js
@@ -68,11 +68,9 @@
                        // should reduce data-parsoid bloat.
                        if (validDataMW && WTSUtils.isValidDSR(dp.dsr)) {
                                dp.src = undefined;
-                       }
-                       // Transcluded nodes will not have dp.tsr set and dont 
need dp.src either
-                       if 
(/(?:^|\s)mw:(Transclusion|Extension)(?=$|\s)/.test(node.getAttribute("typeof"))
 &&
-                               !dp.tsr)
-                       {
+                       } else if 
(/(?:^|\s)mw:(Transclusion|Extension)(?=$|\s)/.test(node.getAttribute("typeof"))
 &&
+                               !dp.tsr) {
+                               // Transcluded nodes will not have dp.tsr set 
and dont need dp.src either
                                dp.src = undefined;
                        }
 
diff --git a/lib/wts.TagHandlers.js b/lib/wts.TagHandlers.js
index 29160bd..7b5c59c 100644
--- a/lib/wts.TagHandlers.js
+++ b/lib/wts.TagHandlers.js
@@ -790,14 +790,15 @@
                                        var out = switchType[1];
                                        var cat = 
out.match(/^(?:category)?(.*)/);
                                        if ( cat && Util.magicMasqs.has(cat[1]) 
) {
-                                               if (dp.src) {
-                                                       // Use content so that 
VE modifications are preserved
-                                                       var contentInfo = 
state.serializer.serializedAttrVal(node, "content", {});
-                                                       out = 
dp.src.replace(/^([^:]+:)(.*)$/, "$1" + contentInfo.value + "}}");
+                                               var wtSource = 
DU.getWTSource(state.env, node);
+                                               // Use content so that VE 
modifications are preserved
+                                               var contentInfo = 
state.serializer.serializedAttrVal(node, "content", {});
+                                               if (wtSource) {
+                                                       out = 
wtSource.replace(/^([^:]+:)(.*)$/, "$1" + contentInfo.value + "}}");
                                                } else {
                                                        var magicWord = 
cat[1].toUpperCase();
-                                                       state.env.log("error", 
cat[1] + ' is missing source. Rendering as ' + magicWord + ' magicword');
-                                                       out = "{{" + magicWord 
+ ":" + content + "}}";
+                                                       
state.env.log("warning", cat[1] + ' is missing source. Rendering as ' + 
magicWord + ' magicword');
+                                                       out = "{{" + magicWord 
+ ":" + contentInfo.value + "}}";
                                                }
                                        } else {
                                                out = 
state.env.conf.wiki.getMagicWordWT( switchType[1], dp.magicSrc ) || '';
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index b1a1b86..c887c29 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -8787,6 +8787,17 @@
 </p>
 !! end
 
+# From plwiki:PLOS_ONE
+!! test
+Parsoid: Page property magic word with magic word contents
+!! options
+parsoid
+!! wikitext
+{{DISPLAYTITLE:''{{PAGENAME}}''}}
+!! html
+<meta property="mw:PageProp/displaytitle" content="Main Page" about="#mwt2" 
typeof="mw:ExpandedAttrs" 
data-mw='{"attribs":[[{"txt":"content"},{"html":"&lt;i 
data-parsoid=\"{&amp;quot;dsr&amp;quot;:[15,31,2,2]}\">&lt;span about=\"#mwt1\" 
typeof=\"mw:Transclusion\" 
data-parsoid=\"{&amp;quot;pi&amp;quot;:[[]],&amp;quot;dsr&amp;quot;:[17,29,null,null]}\"
 
data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;PAGENAME&amp;quot;,&amp;quot;function&amp;quot;:&amp;quot;pagename&amp;quot;},&amp;quot;params&amp;quot;:{},&amp;quot;i&amp;quot;:0}}]}\">Main
 Page&lt;/span>&lt;/i>"}]]}'/>
+!! end
+
 !! test
 Namespace 1 {{ns:1}}
 !! wikitext

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: If7cbb1a3027dcf62dea446742823a1c6ddfa00a5
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
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