/*! * VisualEditor DiffTreeNode class. * * @copyright See AUTHORS.txt * @license The MIT License (MIT); see LICENSE.txt */ /* global treeDiffer */ /** * Tree node for conducting a tree diff. * * @class * @extends treeDiffer.TreeNode * @constructor * @param {Object} node Node of any type * @param {Object} config */ ve.DiffTreeNode = function ( node ) { // Parent constructor ve.DiffTreeNode.super.apply( this, arguments ); this.doc = node.getDocument(); }; /* Inheritance */ OO.inheritClass( ve.DiffTreeNode, treeDiffer.TreeNode ); /* Methods */ /** * Determine whether two nodes are equal. Branch nodes are considered equal if * they have the same types and element.attributes. Content branch nodes are * only equal if they also have the same content. * * @param {ve.DiffTreeNode} otherNode Node to compare to this node * @return {boolean} The nodes are equal */ ve.DiffTreeNode.prototype.isEqual = function ( otherNode ) { if ( !this.node.isDiffedAsTree() && !otherNode.node.isDiffedAsTree() ) { return ve.dm.VisualDiff.static.compareNodes( this.node, otherNode.node ); } else { return ve.dm.ElementLinearData.static.compareElementsUnannotated( this.node.element, otherNode.node.element ); } }; /** * Get the children of the original node * * @return {Array} Array of nodes the same type as the original node */ ve.DiffTreeNode.prototype.getOriginalNodeChildren = function () { return ( this.node.isDiffedAsTree() && this.node.children ) || []; };