summaryrefslogtreecommitdiff
path: root/core/htmlparser/comment.js
diff options
context:
space:
mode:
Diffstat (limited to 'core/htmlparser/comment.js')
-rw-r--r--core/htmlparser/comment.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/core/htmlparser/comment.js b/core/htmlparser/comment.js
new file mode 100644
index 0000000..a7347f6
--- /dev/null
+++ b/core/htmlparser/comment.js
@@ -0,0 +1,80 @@
+/**
+ * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.html or http://ckeditor.com/license
+ */
+
+ 'use strict';
+
+/**
+ * A lightweight representation of an HTML comment.
+ *
+ * @class
+ * @extends CKEDITOR.htmlParser.node
+ * @constructor Creates a comment class instance.
+ * @param {String} value The comment text value.
+ */
+CKEDITOR.htmlParser.comment = function( value ) {
+ /**
+ * The comment text.
+ *
+ * @property {String}
+ */
+ this.value = value;
+
+ /** @private */
+ this._ = {
+ isBlockLike: false
+ };
+};
+
+CKEDITOR.htmlParser.comment.prototype = CKEDITOR.tools.extend( new CKEDITOR.htmlParser.node(), {
+ /**
+ * The node type. This is a constant value set to {@link CKEDITOR#NODE_COMMENT}.
+ *
+ * @readonly
+ * @property {Number} [=CKEDITOR.NODE_COMMENT]
+ */
+ type: CKEDITOR.NODE_COMMENT,
+
+ /**
+ * Filter this comment with given filter.
+ *
+ * @since 4.1
+ * @param {CKEDITOR.htmlParser.filter} filter
+ * @returns {Boolean} Method returns `false` when this comment has
+ * been removed or replaced with other node. This is an information for
+ * {@link CKEDITOR.htmlParser.element#filterChildren} that it has
+ * to repeat filter on current position in parent's children array.
+ */
+ filter: function( filter ) {
+ var comment = this.value;
+
+ if ( !( comment = filter.onComment( comment, this ) ) ) {
+ this.remove();
+ return false;
+ }
+
+ if ( typeof comment != 'string' ) {
+ this.replaceWith( comment );
+ return false;
+ }
+
+ this.value = comment;
+
+ return true;
+ },
+
+ /**
+ * Writes the HTML representation of this comment to a CKEDITOR.htmlWriter.
+ *
+ * @param {CKEDITOR.htmlParser.basicWriter} writer The writer to which write the HTML.
+ * @param {CKEDITOR.htmlParser.filter} [filter] The filter to be applied to this node.
+ * **Note:** it's unsafe to filter offline (not appended) node.
+ */
+ writeHtml: function( writer, filter ) {
+ if ( filter )
+ this.filter( filter );
+
+ writer.comment( this.value );
+ }
+} );