smartxml: ElementNode.prepend
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Fri, 25 Oct 2013 08:28:01 +0000 (10:28 +0200)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Fri, 25 Oct 2013 08:28:01 +0000 (10:28 +0200)
src/smartxml/smartxml.js
src/smartxml/smartxml.test.js

index 56e78af..91dd8bb 100644 (file)
@@ -154,6 +154,11 @@ $.extend(ElementNode.prototype, {
         this._$.append(node.nativeNode);
     },
 
         this._$.append(node.nativeNode);
     },
 
+    prepend: function(node) {
+        node = node instanceof DocumentNode ? node : this.document.createElementNode(node);
+        this._$.prepend(node.nativeNode);
+    },
+
     unwrapContent: function() {
         var parent = this.parent();
         if(!parent) {
     unwrapContent: function() {
         var parent = this.parent();
         if(!parent) {
index 7880017..29c4244 100644 (file)
@@ -258,6 +258,16 @@ describe('smartxml', function() {
             expect(node1.contents()[0].sameNode(node2)).to.be.true;
         });
 
             expect(node1.contents()[0].sameNode(node2)).to.be.true;
         });
 
+        it('prepends element node to another element node', function() {
+            var node1 = elementNodeFromParams({tag: 'div'}),
+                node2 = elementNodeFromParams({tag: 'a'}),
+                node3 = elementNodeFromParams({tag: 'p'});
+            node1.prepend(node2);
+            node1.prepend(node3);
+            expect(node1.contents()[0].sameNode(node3)).to.be.true;
+            expect(node1.contents()[1].sameNode(node2)).to.be.true;
+        });
+
         it('wraps element node with another element node', function() {
             var node = elementNodeFromXML('<div></div>'),
                 wrapper = elementNodeFromXML('<wrapper></wrapper>');
         it('wraps element node with another element node', function() {
             var node = elementNodeFromXML('<div></div>'),
                 wrapper = elementNodeFromXML('<wrapper></wrapper>');