xcorrectinghtmlwriter.java

来自「java写的浏览器」· Java 代码 · 共 78 行

JAVA
78
字号
/*****************************************************************              XBrowser  -  eXtended web Browser                **                                                               **           Copyright (c) 2000-2001  Armond Avanes              **     Refer to ReadMe & License files for more information      **                                                               **                                                               **                 By: Uladzimir V. Kavalchuk                    **               Uladzimir_Kavalchuk@ep.minsk.by                 **               http://xbrowser.sourceforge.net/                ******************************************************************/package xbrowser.renderer.custom;import java.io.*;/** Filter (bad) HTMLWriter's output to restore &#num; symbols. *  Used by XHTMLEditorKit for saving file. *   @since 3.7 *   @author wwk */public class XCorrectingHTMLWriter extends FilterWriter{    public XCorrectingHTMLWriter(Writer out)    {        super(out);    }    /** I looked at HTMLWriter implementation -- this method used that way. */    public void write(char cbuf[], int off, int len) throws IOException    {        if( lastWasStart)        {            lastWasStart = false;        char c = convertToInteger(cbuf);            if( c != 160)                out.write(c);            else                out.write("&#160;"); // This must go as is.            ignoreSemicolon = true;        }        else if( len == 2 && cbuf[0] == '&' && cbuf[1] == '#')            lastWasStart = true;        else        {            if( ! ignoreSemicolon || len != 1 || cbuf[0] != ';')                out.write(cbuf, off, len);            ignoreSemicolon = false;        }    }    private char convertToInteger(char []buf)    {	int i = 0;	int v = 0;	int len = buf.length;	char c;        do        {            c = buf[i];            if( ! Character.isDigit( c))                break;            v *= 10;            v += Character.digit( c, 10);        }        while( ++i < len);        return (char) v;    }// Attributes:    private boolean lastWasStart = false;    private boolean ignoreSemicolon = false;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?