From 0bffae21088aafc0cdebafe6a5de7907d7c52a3a Mon Sep 17 00:00:00 2001 From: "jeremy@jermolene.com" Date: Tue, 26 Apr 2022 14:02:31 +0100 Subject: [PATCH] Add utility method for getting ordered attributes --- core/modules/utils/parsetree.js | 14 ++++++++++++++ core/modules/widgets/let.js | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/modules/utils/parsetree.js b/core/modules/utils/parsetree.js index 52dc203e8..e056b0fdd 100644 --- a/core/modules/utils/parsetree.js +++ b/core/modules/utils/parsetree.js @@ -21,6 +21,20 @@ exports.addAttributeToParseTreeNode = function(node,name,value) { } }; +exports.getOrderedAttributesFromParseTreeNode = function(node) { + if(node.orderedAttributes) { + return node.orderedAttributes; + } else { + var attributes = []; + $tw.utils.each(node.attributes,function(attribute) { + attributes.push(attribute); + }); + return attributes.sort(function(a,b) { + return a.name < b.name ? -1 : (a.name > b.name ? 1 : 0); + }); + } +}; + exports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) { if(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) { return node.attributes[name].value; diff --git a/core/modules/widgets/let.js b/core/modules/widgets/let.js index b3ed89828..5c4b3aa90 100644 --- a/core/modules/widgets/let.js +++ b/core/modules/widgets/let.js @@ -48,7 +48,7 @@ LetWidget.prototype.computeAttributes = function() { var changedAttributes = {}, self = this; this.currentValueFor = Object.create(null); - $tw.utils.each(this.parseTreeNode.orderedAttributes,function(attribute,index) { + $tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(attribute) { var value = self.computeAttribute(attribute), name = attribute.name; if(name.charAt(0) !== "$") {