smartxml: Refactoring Document.transform
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Tue, 18 Feb 2014 11:05:59 +0000 (12:05 +0100)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Tue, 18 Feb 2014 11:13:51 +0000 (12:13 +0100)
This should make handling single transformation transactions
more explicit.

src/smartxml/smartxml.js

index ab4d6fb..5cadcd7 100644 (file)
@@ -476,6 +476,12 @@ $.extend(Document.prototype, Backbone.Events, {
     transform: function(Transformation, args) {
         var toret, transformation;
 
     transform: function(Transformation, args) {
         var toret, transformation;
 
+        if(!this._currentTransaction) {
+            return this.transaction(function() {
+                return this.transform(Transformation, args);
+            }, this);
+        }
+
         if(typeof Transformation === 'function') {
             transformation = new Transformation(this, this, args);
         } else {
         if(typeof Transformation === 'function') {
             transformation = new Transformation(this, this, args);
         } else {
@@ -491,11 +497,7 @@ $.extend(Document.prototype, Backbone.Events, {
                 },
                 function() {
                     if(this._transformationLevel === 1 && !this._undoInProgress) {
                 },
                 function() {
                     if(this._transformationLevel === 1 && !this._undoInProgress) {
-                        if(this._currentTransaction) {
-                            this._currentTransaction.pushTransformation(transformation);
-                        } else {
-                            this.undoStack.push(new Transaction([transformation]));
-                        }
+                        this._currentTransaction.pushTransformation(transformation);
                     }
                     if(!this._undoInProgress && this._transformationLevel === 1) {
                         this.redoStack = [];
                     }
                     if(!this._undoInProgress && this._transformationLevel === 1) {
                         this.redoStack = [];