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

Change subject: T154718: Aliases get the same sort order as paramOrder
......................................................................

T154718: Aliases get the same sort order as paramOrder

Change-Id: Ie18bc50ca8a5a95c2f51f7a2904744bd58c61c9e
---
M lib/html2wt/WikitextSerializer.js
M tests/mocha/templatedata.js
M tests/mockAPI.js
3 files changed, 28 insertions(+), 1 deletion(-)


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

diff --git a/lib/html2wt/WikitextSerializer.js 
b/lib/html2wt/WikitextSerializer.js
index d25cb0c..1777032 100644
--- a/lib/html2wt/WikitextSerializer.js
+++ b/lib/html2wt/WikitextSerializer.js
@@ -480,13 +480,23 @@
                        kvMap.set(k, { serializeAsNamed: serializeAsNamed, 
name: name, value: value });
                });
        }).then(function() {
+               var paramOrder = [];
+               if (tplData && Array.isArray(tplData.paramOrder)) {
+                       var params = tplData.params;
+                       // Aliases have the same sort order as the main name
+                       paramOrder = tplData.paramOrder.reduce(function(prev, 
next) {
+                               var aliases = params && params[next] && 
params[next].aliases;
+                               aliases = Array.isArray(aliases) ? aliases : [];
+                               return prev.concat(next, aliases);
+                       }, paramOrder);
+               }
                var argOrder = [].concat(
                        // 1. Use tpldata param order as the first guide
                        //    Note that:
                        //    (a) template arg names are case-sensitive
                        //    (b) arg names in tplData.paramOrder already
                        //        have their spaces trimmed
-                       (tplData && tplData.paramOrder) || [],
+                       paramOrder,
 
                        // 2. Push keys from data-parsoid
                        //    data-parsoid argInfo also present in data-mw
diff --git a/tests/mocha/templatedata.js b/tests/mocha/templatedata.js
index 27b65e5..4ad8233 100644
--- a/tests/mocha/templatedata.js
+++ b/tests/mocha/templatedata.js
@@ -170,6 +170,17 @@
                        'edited':      '{{BlockTplWithParamOrder\n| f1 = BAR\n| 
f2 = foo\n}}SOME TEXT{{InlineTplNoParamOrder|f2 = foo|f1 = foo}}',
                },
        },
+
+       // 11. Alias sort order
+       {
+               'name': 'Enforce param order with aliases',
+               'html': '<span about="#mwt1" typeof="mw:Transclusion"' + " 
data-mw='" + 
'{"parts":[{"template":{"target":{"wt":"WithParamOrderAndAliases\\n","href":"./Template:WithParamOrderAndAliases"},"params":{"f2":{"wt":"foo"},"f3":{"wt":"foo"}},"i":1}}]}'
 + "'" + '>foo</span>',
+               'wt': {
+                       'no_selser':   
'{{WithParamOrderAndAliases|f3=foo|f2=foo}}',
+                       'new_content': 
'{{WithParamOrderAndAliases|f3=foo|f2=foo}}',
+                       'edited':      
'{{WithParamOrderAndAliases|f3=foo|f2=BAR}}',
+               },
+       },
 ];
 
 var dataParsoidVersionTests = [
diff --git a/tests/mockAPI.js b/tests/mockAPI.js
index 732637d..f73c208 100644
--- a/tests/mockAPI.js
+++ b/tests/mockAPI.js
@@ -264,6 +264,12 @@
                'format': 'block',
                'paramOrder': ['f1','f2'],
        },
+       'Template:WithParamOrderAndAliases': {
+               'params': {
+                       'f1': { 'aliases': ['f3'] }
+               },
+               'paramOrder': ['f1','f2'],
+       },
 };
 
 var formatters = {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie18bc50ca8a5a95c2f51f7a2904744bd58c61c9e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to