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 <gwi...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits