smartxml: allow for removing node data for a specified key
[fnpeditor.git] / src / smartxml / smartxml.js
index 502eda6..de70e9b 100644 (file)
@@ -123,9 +123,17 @@ $.extend(DocumentNode.prototype, {
     },
 
     isSurroundedByTextNodes: function() {
-        var prev = this.prev(),
-            next = this.next();
-        return prev && (prev.nodeType === Node.TEXT_NODE) && next && (next.nodeType === Node.TEXT_NODE);
+        return this.isPrecededByTextNode() && this.isFollowedByTextNode();
+    },
+
+    isPrecededByTextNode: function() {
+        var prev = this.prev();
+        return prev && prev.nodeType === Node.TEXT_NODE;
+    },
+
+    isFollowedByTextNode: function() {
+        var next = this.next();
+        return next && next.nodeType === Node.TEXT_NODE;
     },
 
     triggerChangeEvent: function(type, metaData, origParent, nodeWasContained) {
@@ -169,8 +177,12 @@ $.extend(ElementNode.prototype, {
     nodeType: Node.ELEMENT_NODE,
 
     setData: function(key, value) {
-        if(value !== undefined) {
-            this._$.data(key, value);
+        if(arguments.length === 2) {
+            if(_.isUndefined(value)) {
+                this._$.removeData(key);
+            } else {
+                this._$.data(key, value);
+            }
         } else {
             this._$.removeData(_.keys(this._$.data()));
             this._$.data(key);