001    /*
002     * Copyright 2004-2006 Geert Bevin <gbevin[remove] at uwyn dot com>
003     * Distributed under the terms of either:
004     * - the common development and distribution license (CDDL), v1.0; or
005     * - the GNU Lesser General Public License, v2.1 or later
006     * $Id: Renderer.java 3108 2006-03-13 18:03:00Z gbevin $
007     */
008    package com.uwyn.jhighlight.renderer;
009    
010    import java.io.IOException;
011    import java.io.InputStream;
012    import java.io.OutputStream;
013    
014    /**
015     * Provides interface to render the source code highlighting.
016     *
017     * @author Geert Bevin (gbevin[remove] at uwyn dot com)
018     * @version $Revision: 3108 $
019     * @since 1.0
020     */
021    public interface Renderer
022    {
023            /**
024             * Transforms source code that's provided through an
025             * <code>InputStream</code> to highlighted syntax and writes it back to
026             * an <code>OutputStream</code>.
027             *
028             * @param name The name of the source file.
029             * @param in The input stream that provides the source code that needs to
030             * be transformed.
031             * @param out The output stream to which to result should be written.
032             * @param encoding The encoding that will be used to read and write the
033             * text.
034             * @param fragment <code>true</code> if the result should be a fragment;
035             * or <code>false</code> if it should be a complete document
036             * @see #highlight(String, String, String, boolean)
037             * @since 1.0
038             */
039            public void highlight(String name, InputStream in, OutputStream out, String encoding, boolean fragment) throws IOException;
040    
041            /**
042             * Transforms source code that's provided through a
043             * <code>String</code> to highlighted syntax and returns it as a
044             * <code>String</code>.
045             *
046             * @param name The name of the source file.
047             * @param in The input string that provides the source code that needs to
048             * be transformed.
049             * @param encoding The encoding that will be used to read and write the
050             * text.
051             * @param fragment <code>true</code> if the result should be a fragment;
052             * or <code>false</code> if it should be a complete document
053             * @return the highlighted source code as a string
054             * @see #highlight(String, InputStream, OutputStream, String, boolean)
055             * @since 1.0
056             */
057            public String highlight(String name, String in, String encoding, boolean fragment) throws IOException;
058    }