Source: transform/transformation.js

/**
 * Constructor for Transformation. This may be invoked by concrete sub-classes
 * 
 * @classdesc
 * 
 * A graph transformation takes a graph as input and modifies it in place. Each
 * type of transformation is defined in its own class.
 * 
 * Graph transformations should strive to preserve the definitions of 'parent',
 * 'child', 'next' and 'previous' as defined in {@link AbstractNode}
 * 
 * Each transformation should declare a priority field of type Number.
 * Transformations of highest priority will be applied first.
 * 
 * @constructor
 * @abstract
 */
function Transformation() {
     if (this.constructor == Transformation) {
         throw new Exception("Cannot instantiate Transformation; Transformation is an abstract class");
     }
};

/**
 * The transform method is solely responsible for performing the actual
 * transformation. The provided VisualGraph and its underlying
 * {@link ModelGraph} is modified in place
 * 
 * @abstract
 * @param {VisualGraph} model
 */
Transformation.prototype.transform = function(model) {
};