wlxml: comments
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Wed, 14 May 2014 14:20:14 +0000 (16:20 +0200)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Wed, 28 May 2014 12:45:58 +0000 (14:45 +0200)
src/wlxml/extensions/comments/comments.js [new file with mode: 0644]
src/wlxml/wlxml.js

diff --git a/src/wlxml/extensions/comments/comments.js b/src/wlxml/extensions/comments/comments.js
new file mode 100644 (file)
index 0000000..521bad8
--- /dev/null
@@ -0,0 +1,36 @@
+define(function() {
+    
+'use strict';
+
+var extension = {wlxmlClass: {comment: {
+    methods: {
+        describesParent: true,
+        getText: function() {
+            var text = '';
+            this.contents()
+                .filter(function(node) {
+                    /* globals Node */
+                    return node && node.nodeType === Node.TEXT_NODE;
+                })
+                .forEach(function(node) {
+                    text = text + node.getText();
+                });
+            return text;
+        },
+        setText: function(text) {
+            var contents = this.contents();
+            if(contents.length === 1 && contents[0].nodeType === Node.TEXT_NODE) {
+                contents[0].setText(text);
+            } else {
+                contents.forEach(function(node) {
+                    node.detach();
+                });
+                this.append({text: text});
+            }
+        }
+    }
+}}};
+
+return extension;
+
+});
\ No newline at end of file
index bbd6233..e9e5d5b 100644 (file)
@@ -3,8 +3,9 @@ define([
     'libs/underscore',
     'smartxml/smartxml',
     'smartxml/transformations',
-    'wlxml/extensions/metadata/metadata'
-], function($, _, smartxml, transformations, metadataExtension) {
+    'wlxml/extensions/metadata/metadata',
+    'wlxml/extensions/comments/comments'
+], function($, _, smartxml, transformations, metadataExtension, commentExtension) {
     
 'use strict';
 
@@ -213,7 +214,7 @@ $.extend(WLXMLTextNode.prototype, WLXMLDocumentNodeMethods);
 var WLXMLDocument = function(xml, options) {
     this.classMethods = {};
     this.classTransformations = {};
-    smartxml.Document.call(this, xml, [metadataExtension]);
+    smartxml.Document.call(this, xml, [metadataExtension, commentExtension]);
     this.options = options;
 };