Arlolra has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/395665 )

Change subject: Alias map
......................................................................

Alias map

Change-Id: Ica3ea544cec7183b3474b5cdf7489e3f04c91eef
---
M lib/html2wt/WikitextSerializer.js
1 file changed, 12 insertions(+), 3 deletions(-)


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

diff --git a/lib/html2wt/WikitextSerializer.js 
b/lib/html2wt/WikitextSerializer.js
index 895de1c..c54987e 100644
--- a/lib/html2wt/WikitextSerializer.js
+++ b/lib/html2wt/WikitextSerializer.js
@@ -423,16 +423,19 @@
        }));
        // Record order of parameters in templatedata (if present)
        var tplDataOrder = new Map();
+       var aliasMap = new Map();
        var keys = [];
        if (tplData && Array.isArray(tplData.paramOrder)) {
                var params = tplData.params;
                tplData.paramOrder.forEach(function(k, i) {
-                       tplDataOrder.set(k, { order: keys.length });
+                       tplDataOrder.set(k, { order: i });
+                       aliasMap.set(k, { key: k, order: -1 });
                        keys.push(k);
                        // Aliases have the same sort order as the main name.
                        var aliases = params && params[k] && params[k].aliases;
-                       (aliases || []).forEach(function(a) {
-                               tplDataOrder.set(a, { order: keys.length });
+                       (aliases || []).forEach(function(a, j) {
+                               tplDataOrder.set(a, { order: i });
+                               aliasMap.set(a, { key: k, order: j });
                                keys.push(a);
                        });
                });
@@ -467,6 +470,12 @@
                var aOrder = defaultGet(nearestOrder, a);
                var bOrder = defaultGet(nearestOrder, b);
                if (aOrder !== bOrder) { return aOrder - bOrder; }
+               // canon
+               var aCanon = aliasMap.get(a);
+               var bCanon = aliasMap.get(b);
+               if (aCanon && bCanon && aCanon.key === bCanon.key) {
+                       return aCanon.order - bCanon.order;
+               }
                // secondary key is templatedata order
                aOrder = defaultGet(tplDataOrder, a);
                bOrder = defaultGet(tplDataOrder, b);

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ica3ea544cec7183b3474b5cdf7489e3f04c91eef
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <abrea...@wikimedia.org>

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

Reply via email to