GWicke has uploaded a new change for review.
https://gerrit.wikimedia.org/r/70741
Change subject: Reduce syntactic diffs on ' = '
......................................................................
Reduce syntactic diffs on ' = '
Changed behavior for template transclusion parameter serialization so that:
* ' = ' is used for new content
* ' = ' is used if the key part had a space before
* '=' is used otherwise
This reduces the number of syntactic diffs a fair bit. On Obama for example,
the number of syntactic diffs drops from 94 to 65.
Change-Id: Ic6cfba86baf689a054234b176a98d7a6a1fa52db
---
M js/lib/mediawiki.WikitextSerializer.js
1 file changed, 27 insertions(+), 5 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Parsoid
refs/changes/41/70741/1
diff --git a/js/lib/mediawiki.WikitextSerializer.js
b/js/lib/mediawiki.WikitextSerializer.js
index 11de6a2..f10176c 100644
--- a/js/lib/mediawiki.WikitextSerializer.js
+++ b/js/lib/mediawiki.WikitextSerializer.js
@@ -2624,9 +2624,10 @@
node, state, cb);
};
-WSP._buildTemplateWT = function(state, srcParts, dp) {
+WSP._buildTemplateWT = function(node, state, srcParts) {
var buf = [],
- serializer = this;
+ serializer = this,
+ dp = node.data.parsoid;
srcParts.map(function(part) {
var tpl = part.template;
if (tpl) { // transclusion: tpl or parser function
@@ -2662,8 +2663,28 @@
numericIndex++;
argBuf.push(v);
} else {
- var kStr = k + (isTpl &&
!k.match(/\s$/) ? ' ' : ''),
- vStr = (isTpl &&
!v.match(/^\s/) ? ' ' : '') + v;
+ var kStr = k,
+ vStr = v;
+
+ if (isTpl) {
+ // Massage the space
around the equal a bit for
+ // templates. Parser
function values are not
+ // stripped the same
way, so don't apply to those
+ // just yet.
+ if (DU.isNewElt(node)) {
+ // Default to '
= ' for new content
+ if
(!/\s$/.test(k)) {
+ kStr =
kStr + ' ';
+ }
+ if
(!/^\s/.test(v)) {
+ vStr =
' ' + vStr;
+ }
+ } else if
(k.match(/\s$/) && !v.match(/^\s/)) {
+ // Only prefix
value with space if key
+ // ends with
space too
+ vStr = ' ' +
vStr;
+ }
+ }
argBuf.push(kStr + "=" + vStr);
}
}
@@ -2767,7 +2788,8 @@
if
(/\bmw:(Transclusion\b|Param\b)/.test(typeOf)) {
dataMW =
JSON.parse(node.getAttribute("data-mw"));
if (dataMW) {
- src =
state.serializer._buildTemplateWT(state, dataMW.parts || [{ template: dataMW
}], dp);
+ src =
state.serializer._buildTemplateWT(node,
+ state,
dataMW.parts || [{ template: dataMW }]);
} else {
console.error("ERROR: No
data-mw for: " + node.outerHTML);
src = dp.src;
--
To view, visit https://gerrit.wikimedia.org/r/70741
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic6cfba86baf689a054234b176a98d7a6a1fa52db
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: GWicke <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits