4bb5afe6847b93e7cce2b1a28bc116df985c7511
[fnpeditor.git] / src / smartxml / smartxml.js
1 define([
2     'libs/jquery'
3 ], function($) {
4     
5 'use strict';
6
7
8 var parseXML = function(xml) {
9     return $(xml)[0];
10 }
11
12 var Document = function(nativeNode) {
13     var $document = $(nativeNode);
14
15
16     Object.defineProperty(this, 'root', {get: function() { return new ElementNode($document[0])}}); 
17 }
18
19
20 var ElementNode = function(nativeNode) {
21     var myNode = nativeNode,
22         $myNode = $(nativeNode);
23
24     this._$myNode = $myNode;
25     this._myNode= myNode;
26
27     this.getTagName = function() {
28         return myNode.tagName.toLowerCase();
29     };
30
31     this.append = function(documentNode) {
32         this._$myNode.append(documentNode._$myNode);
33     };
34
35     this.contents = function() {
36         var toret = [];
37         this._$myNode.contents().each(function() {
38             if(this.nodeType === Node.ELEMENT_NODE)
39                 toret.push(new ElementNode(this));
40         });
41         return toret;
42     };
43
44     this.sameNode = function(otherNode) {
45         return this._myNode === otherNode._myNode;
46     }
47 };
48
49 return {
50     documentFromXML: function(xml) {
51         return new Document(parseXML(xml));
52     },
53
54     elementNodeFromXML: function(xml) {
55         return new ElementNode(parseXML(xml));
56     }
57 };
58
59 });