public/ckeditor/4.4dev/core/dom/range.js
function( includeSelf, ignoreTextNode ) {
			var start = this.startContainer,
				end = this.endContainer,
				ancestor;

			if ( start.equals( end ) ) {
				if ( includeSelf && start.type == CKEDITOR.NODE_ELEMENT && this.startOffset == this.endOffset - 1 )
					ancestor = start.getChild( this.startOffset );
				else
					ancestor = start;
			} else {
				ancestor = start.getCommonAncestor( end );
			}

			return ignoreTextNode && !ancestor.is ? ancestor.getParent() : ancestor;
		}
function( includeSelf, ignoreTextNode ) {
			var start = this.startContainer,
				end = this.endContainer,
				ancestor;

			if ( start.equals( end ) ) {
				if ( includeSelf && start.type == CKEDITOR.NODE_ELEMENT && this.startOffset == this.endOffset - 1 )
					ancestor = start.getChild( this.startOffset );
				else
					ancestor = start;
			} else {
				ancestor = start.getCommonAncestor( end );
			}

			return ignoreTextNode && !ancestor.is ? ancestor.getParent() : ancestor;
		}
function ( includeSelf , ignoreTextNode ) { var start = this . startContainer , end = this . endContainer , ancestor ; if ( start . equals ( end ) ) { if ( includeSelf && start . type == CKEDITOR . NODE_ELEMENT && this . startOffset == this . endOffset - 1 ) ancestor = start . getChild ( this . startOffset ) ; else ancestor = start ; } else { ancestor = start . getCommonAncestor ( end ) ; } return ignoreTextNode && ! ancestor . is ? ancestor . getParent ( ) : ancestor ; }
Find the node which fully contains the range.

@param {Boolean} [includeSelf=false]
@param {Boolean} [ignoreTextNode=false] Whether ignore {@link CKEDITOR#NODE_TEXT} type.
@returns {CKEDITOR.dom.element}
Find the node which fully contains the range .