editor: canvas - support NullElements - elements that are not inserted into canvas
[fnpeditor.git] / src / wlxml / wlxml.js
index bbd6233..f370223 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';
 
@@ -90,6 +91,11 @@ $.extend(WLXMLElementNode.prototype, WLXMLDocumentNodeMethods, smartxml.ElementN
         return (_.isUndefined(query.klass) || this.getClass().substr(0, query.klass.length) === query.klass) &&
                (_.isUndefined(query.tagName) || this.getTagName() === query.tagName);
     },
+    hasChild: function(query) {
+        return this.contents().some(function(child) {
+            return child.is(query);
+        }.bind(this));
+    },
     getMetaAttributes: function() {
         var toret = new AttributesList(),
             classParts = [''].concat(this.getClass().split('.')),
@@ -208,12 +214,14 @@ var WLXMLTextNode = function() {
     smartxml.TextNode.apply(this, arguments);
 };
 WLXMLTextNode.prototype = Object.create(smartxml.TextNode.prototype);
-$.extend(WLXMLTextNode.prototype, WLXMLDocumentNodeMethods);
+$.extend(WLXMLTextNode.prototype, WLXMLDocumentNodeMethods, {
+    is: function() { return false; }
+});
 
 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;
 };