smartxml: allow for removing node data for a specified key
[fnpeditor.git] / src / smartxml / smartxml.js
index 3ee49b7..de70e9b 100644 (file)
@@ -122,10 +122,18 @@ $.extend(DocumentNode.prototype, {
         return myIdx < parentContents.length - 1 ? parentContents[myIdx+1] : null;
     },
 
-    isSurroundedByTextElements: function() {
-        var prev = this.prev(),
-            next = this.next();
-        return prev && (prev.nodeType === Node.TEXT_NODE) && next && (next.nodeType === Node.TEXT_NODE);
+    isSurroundedByTextNodes: function() {
+        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);