diff options
Diffstat (limited to 'core/htmlparser/node.js')
| -rw-r--r-- | core/htmlparser/node.js | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/core/htmlparser/node.js b/core/htmlparser/node.js new file mode 100644 index 0000000..535df32 --- /dev/null +++ b/core/htmlparser/node.js @@ -0,0 +1,98 @@ +/** + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.html or http://ckeditor.com/license + */ + +'use strict'; + +(function() { + /** + * A lightweight representation of HTML node. + * + * @since 4.1 + * @class + * @constructor Creates a node class instance. + */ + CKEDITOR.htmlParser.node = function() {}; + + CKEDITOR.htmlParser.node.prototype = { + /** + * Remove this node from a tree. + * + * @since 4.1 + */ + remove: function() { + var children = this.parent.children, + index = CKEDITOR.tools.indexOf( children, this ), + previous = this.previous, + next = this.next; + + previous && ( previous.next = next ); + next && ( next.previous = previous ); + children.splice( index, 1 ); + this.parent = null; + }, + + /** + * Replace this node with given one. + * + * @since 4.1 + * @param {CKEDITOR.htmlParser.node} node The node that will replace this one. + */ + replaceWith: function( node ) { + var children = this.parent.children, + index = CKEDITOR.tools.indexOf( children, this ), + previous = node.previous = this.previous, + next = node.next = this.next; + + previous && ( previous.next = node ); + next && ( next.previous = node ); + + children[ index ] = node; + + node.parent = this.parent; + this.parent = null; + }, + + /** + * Insert this node after given one. + * + * @since 4.1 + * @param {CKEDITOR.htmlParser.node} node The node that will precede this element. + */ + insertAfter: function( node ) { + var children = node.parent.children, + index = CKEDITOR.tools.indexOf( children, node ), + next = node.next; + + children.splice( index + 1, 0, this ); + + this.next = node.next; + this.previous = node; + node.next = this; + next && ( next.previous = this ); + + this.parent = node.parent; + }, + + /** + * Insert this node before given one. + * + * @since 4.1 + * @param {CKEDITOR.htmlParser.node} node The node that will follow this element. + */ + insertBefore: function( node ) { + var children = node.parent.children, + index = CKEDITOR.tools.indexOf( children, node ); + + children.splice( index, 0, this ); + + this.next = node; + this.previous = node.previous; + node.previous && ( node.previous.next = this ); + node.previous = this; + + this.parent = node.parent; + } + }; +})(); |
