DocumentTextNode.after
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Mon, 8 Jul 2013 12:55:01 +0000 (14:55 +0200)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Mon, 8 Jul 2013 12:55:01 +0000 (14:55 +0200)
modules/documentCanvas/canvas/canvas.test3.js
modules/documentCanvas/canvas/documentElement.js

index 77c6871..3a3ea44 100644 (file)
@@ -174,6 +174,19 @@ describe('Canvas', function() {
                     expect(children.length).to.equal(2);
                     expect(children[0].sameNode(added));
                 });
+
+                it('can put new DocumentNodeElement after DocumentTextElement', function() {
+                    var c = canvas.fromXML('<section>Alice</section>'),
+                        text = c.doc().children()[0],
+                        added = text.after({tag: 'p'}),
+                        children = c.doc().children();
+
+                    expect(children.length).to.equal(2);
+                    expect(children[0]).to.be.instanceOf(documentElement.DocumentTextElement);
+                    expect(children[0].getText()).to.equal('Alice');
+                    expect(children[1]).to.be.instanceOf(documentElement.DocumentNodeElement);
+                    expect(children[1].sameNode(added)).to.be.true;
+                });
             });
 
             describe('wrapping', function() {
index aca727a..6fea275 100644 (file)
@@ -111,6 +111,20 @@ $.extend(DocumentTextElement.prototype, {
     },
     getText: function() {
         return this.$element.text();
+    },
+    after: function(params) {
+        if(params.text || params instanceof DocumentTextElement)
+            return false;
+        var dom;
+        if(params instanceof DocumentNodeElement) {
+            dom = params.dom();
+        } else {
+            dom = DocumentNodeElement.createDOM(params);
+        }
+        this.$element.wrap('<div>');
+        this.$element.parent().after(dom[0]);
+        this.$element.unwrap();
+        return documentElementFromHTMLElement(dom[0]);
     }
 });