My TranslatorReader allows simple indenting with blanks
two methods change:

  • handleBackslash
  • handleHeading

one new method:

  • addBlankSpaces

WolfgangIrler


...
public class TranslatorReader extends Reader
.....
    /** Allow this many characters to be pushed back in the stream. */
///Wolfgang
//    private static final int              PUSHBACK_BUFFER_SIZE = 8;
    private static final int              PUSHBACK_BUFFER_SIZE = 100; 
///Wolfgang
...
    private String handleBackslash()
        throws IOException
    {
        int ch = nextToken();

        if( ch == '\\' )
        {
            int ch2 = nextToken();

            if( ch2 == '\\' )
            {
                return "<BR clear=\"all\" />";
            }
           
            pushBack( ch2 );

///Wolfgang
                StringBuffer buf = new StringBuffer();
                buf.append( "<BR />" );
                addBlankSpaces(buf);
                return buf.toString();
//            return "<BR />";
///Wolfgang
        }

        pushBack( ch );

        return "\\";
    }

...
    private String handleHeading()
        throws IOException
    {
        StringBuffer buf = new StringBuffer();

        int ch  = nextToken();

        if( ch == '!' )
        {
            int ch2 = nextToken();

            if( ch2 == '!' )
            {
                buf.append("<H2>");
///Wolfgang
                addBlankSpaces(buf);
///Wolfgang
                m_closeTag = "</H2>";
            }
            else
            {
                buf.append( "<H3>" );
///Wolfgang
                addBlankSpaces(buf);
///Wolfgang
                m_closeTag = "</H3>";
                pushBack( ch2 );
            }
        }
        else
        {
            buf.append( "<H4>" );
///Wolfgang
                addBlankSpaces(buf);
///Wolfgang
            m_closeTag = "</H4>";
            pushBack( ch );
        }
        
        return buf.toString();
    }

....
    /*
     * adds as many '&nbsp;' (=coded &NonBlankSPace; see in editing!) as blanks present
     * useful for manual indenting headers or after forced linebreak
     * @author Wolfgang Irler (01/2003)
     * 
     **/
    public void addBlankSpaces( StringBuffer buf )
        throws IOException 
    {
///Wolfgang
                int ch3 = 0;
                int blanks=0;
                boolean checkBlanks=true;
                while (checkBlanks) {
                    ch3 = nextToken();
                    if (ch3 == ' ' && checkBlanks){
                        blanks++;
                        buf.append( "&nbsp;" ); // reads "&NonBlankSPace;" see in edit mode!!
                        if (blanks>=PUSHBACK_BUFFER_SIZE) checkBlanks=false;
                    }else {
                        pushBack( ch3 );
                        checkBlanks=false;
                    }
                }
///Wolfgang
    }
    

Add new attachment

In order to upload a new attachment to this page, please use the following box to find the file, then click on “Upload”.
« This page (revision-17) was last changed on 08-Dec-2007 21:34 by HarryMetske