smartxml: helper functions
[fnpeditor.git] / src / smartxml / smartxml.js
index 35c5299..dcecc64 100644 (file)
@@ -78,6 +78,10 @@ $.extend(DocumentNode.prototype, {
         return this.document.root.sameNode(this);
     },
 
+    isSiblingOf: function(node) {
+        return node && this.parent().sameNode(node.parent());
+    },
+
     sameNode: function(otherNode) {
         return !!(otherNode) && this.nativeNode === otherNode.nativeNode;
     },
@@ -143,6 +147,10 @@ $.extend(DocumentNode.prototype, {
             return 0;
         }
         return this.parent().indexOf(this);
+    },
+
+    getNearestElementNode: function() {
+        return this.nodeType === Node.ELEMENT_NODE ? this : this.parent();
     }
 });
 
@@ -479,7 +487,7 @@ $.extend(Document.prototype, Backbone.Events, {
         if(!this._currentTransaction) {
             return this.transaction(function() {
                 return this.transform(Transformation, args);
-            }, this);
+            }, {context: this});
         }
 
         if(typeof Transformation === 'function') {
@@ -581,6 +589,7 @@ $.extend(Document.prototype, Backbone.Events, {
         this.replaceRoot(this._rollbackBackup);
         this._rollbackBackup = null;
         this._currentTransaction = null;
+        this._transformationLevel = 0;
     },
 
     transaction: function(callback, params) {
@@ -597,6 +606,9 @@ $.extend(Document.prototype, Backbone.Events, {
             return;
         }
         this.endTransaction();
+        if(params.success) {
+            params.success(toret);
+        }
         return toret;
     },