From: Aleksander Ɓukasz Date: Fri, 24 Jan 2014 15:39:38 +0000 (+0100) Subject: smartxml: Fixing invalidated paths used to access transformation node arguments X-Git-Url: https://git.mdrn.pl/fnpeditor.git/commitdiff_plain/4468d51bdcf250b3688440376c2dba985124c4c5?hp=0b806c04dc979bd1f407f1201fd9be2101755055 smartxml: Fixing invalidated paths used to access transformation node arguments This ensures that wrapper around node argument sent to the transformation is using path only the first time it needs to, not every time after first run of the transformation. --- diff --git a/src/smartxml/transformations.js b/src/smartxml/transformations.js index e239b6a..a2a9f48 100644 --- a/src/smartxml/transformations.js +++ b/src/smartxml/transformations.js @@ -51,7 +51,7 @@ toret.createGenericTransformation = function(desc, name) { }); this.document = document; - this.hasRun = false; + this.runCount = 0; if(desc.init) { desc.init.call(this); } @@ -73,7 +73,7 @@ toret.createGenericTransformation = function(desc, name) { } var argsToPass = desc.undo ? [this].concat(this.args) : this.args; var toret = desc.impl.apply(this.context, argsToPass); - this.hasRun = true; + this.runCount++; return toret; }, undo: function() { @@ -88,6 +88,7 @@ toret.createGenericTransformation = function(desc, name) { }, wrapNodeProperty: function(object, propName, value) { var transformation = this, + lastRunNumber = 0, path; value = value || object[propName]; @@ -95,11 +96,11 @@ toret.createGenericTransformation = function(desc, name) { path = value.getPath(); Object.defineProperty(object, propName, { get: function() { - if(transformation.hasRun && path) { - return transformation.document.getNodeByPath(path); - } else { - return value; + if((lastRunNumber !== transformation.runCount) && path) { + value = transformation.document.getNodeByPath(path); + lastRunNumber = transformation.runCount; } + return value; } }); }