From 4c4ed78f47e27c37bbe1bbcd67fc66f4dbc94d70 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Thu, 26 Sep 2013 15:12:36 +0200 Subject: [PATCH] node.contents(), TextNode --- src/smartxml/smartxml.js | 14 ++++++++++++++ src/smartxml/smartxml.test.js | 16 ++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/smartxml/smartxml.js b/src/smartxml/smartxml.js index 0c76cd2..f6fae64 100644 --- a/src/smartxml/smartxml.js +++ b/src/smartxml/smartxml.js @@ -23,6 +23,8 @@ var ElementNode = function(nativeNode) { }; $.extend(ElementNode.prototype, { + nodeType: Node.ELEMENT_NODE, + getTagName: function() { return this.nativeNode.tagName.toLowerCase(); }, @@ -36,6 +38,8 @@ $.extend(ElementNode.prototype, { this._$.contents().each(function() { if(this.nodeType === Node.ELEMENT_NODE) toret.push(new ElementNode(this)); + else if(this.nodeType === Node.TEXT_NODE) + toret.push(new TextNode(this)); }); return toret; }, @@ -47,6 +51,16 @@ $.extend(ElementNode.prototype, { }); +var TextNode = function(nativeNode) { + this.nativeNode = nativeNode; + this._$ = $(nativeNode); +} + +$.extend(TextNode.prototype, { + nodeType: Node.TEXT_NODE +}) + + return { documentFromXML: function(xml) { return new Document(parseXML(xml)); diff --git a/src/smartxml/smartxml.test.js b/src/smartxml/smartxml.test.js index 8b9ed6e..c9264bc 100644 --- a/src/smartxml/smartxml.test.js +++ b/src/smartxml/smartxml.test.js @@ -17,6 +17,10 @@ var elementNodeFromParams = function(params) { return smartxml.elementNodeFromXML('<' + params.tag + '>'); } +var elementNodeFromXML = function(xml) { + return smartxml.elementNodeFromXML(xml); +} + describe.only('smartxml', function() { @@ -27,6 +31,18 @@ describe.only('smartxml', function() { }); }); + describe('Basic ElementNode properties', function() { + it('exposes node contents', function() { + var node = elementNodeFromXML('Sometextis here'), + contents = node.contents(); + + expect(contents).to.have.length(3); + expect(contents[0].nodeType).to.equal(Node.TEXT_NODE, 'text node 1'); + expect(contents[1].nodeType).to.equal(Node.ELEMENT_NODE, 'element node 1'); + expect(contents[2].nodeType).to.equal(Node.TEXT_NODE, 'text node 2'); + }); + }) + describe('Manipulations', function() { it('appende element node to another element node', function() { -- 2.20.1