return node;
},
+ /**
+ * Removes parent of a node if node has no siblings.
+ */
+ unwrap: function() {
+ if(this.isRoot()) {
+ return;
+ }
+ var parent = this.parent(),
+ grandParent;
+ if(parent.contents().length === 1) {
+ grandParent = parent.parent();
+ parent.unwrapContent();
+ return grandParent;
+ }
+ },
+
triggerChangeEvent: function(type, metaData) {
var event = new events.ChangeEvent(type, $.extend({node: this}, metaData || {}));
if(type === 'nodeDetached' || this.document.containsNode(event.meta.node)) {
};
},
- /**
- * Removes parent of a node if node has no siblings.
- */
- unwrap: function() {
- if(this.isRoot()) {
- return;
- }
- var parent = this.parent(),
- grandParent;
- if(parent.contents().length === 1) {
- grandParent = parent.parent();
- parent.unwrapContent();
- return grandParent;
- }
- },
-
wrapText: function(params) {
return this.document._wrapText(_.extend({inside: this}, params));
},
expect(node.contents()[2].getText()).to.equal(' a cat!');
});
- it('unwrap single node from its parent', function() {
+ it('unwrap single element node from its parent', function() {
var doc = getDocumentFromXML('<div><a><b></b></a></div>'),
div = doc.root,
a = div.contents()[0],
expect(div.contents()[0].sameNode(b)).to.equal(true, 'node got unwrapped');
});
+ it('unwrap single text node from its parent', function() {
+ var doc = getDocumentFromXML('<div>Some <span>text</span>!</div>'),
+ div = doc.root,
+ span = div.contents()[1],
+ text = span.contents()[0];
+
+ var parent = text.unwrap();
+
+ expect(parent.sameNode(div)).to.equal(true, 'returns new parent');
+ expect(div.contents()).to.have.length(1, 'root contains only one node');
+ expect(div.contents()[0].getText()).to.equal('Some text!');
+ });
+
describe('Wrapping text', function() {
it('wraps text spanning multiple sibling TextNodes', function() {
var section = elementNodeFromXML('<section>Alice has a <span>small</span> cat</section>'),