package com.editev.chess.printer;

import com.editev.util.Function;
import com.editev.chess.Chess;
import com.editev.chess.GameHTML;

/** A Printer is a Function that prints to a GameHTML -- we put together Printers to display
 *  an entire game as HTML.
 *
 *  @see See the source here.
 */
abstract public class Printer extends Chess implements Function {

    /** Print to an instance of GameHTML. 
     *  @param gameHTML The GameHTML, which can also be 
     */
    abstract public void print( GameHTML gameHTML );

    /** Print to a GameHTML and return the same object. */
    public Object eval( Object gameHTML ) {
        print( (GameHTML) gameHTML );
        return gameHTML;        
    }
}