⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filtercodehighlight.java

📁 JSP聊天系统
💻 JAVA
字号:
package org.ehotsoft.yekki.filter;

import org.ehotsoft.yekki.filter.util.CodeSyntaxParser;
import java.util.*;

public class FilterCodeHighlight extends Filter
    implements java.io.Serializable {

    private static final String NEW_LINE = System.getProperty("line.separator");
    private Properties props;
    private transient CodeSyntaxParser csp;
	
	public FilterCodeHighlight() {
		
		props = new Properties();
		csp = new CodeSyntaxParser();
	}

    public FilterCodeHighlight( Message message ) {

        super( message );

		props = new Properties();
		csp = new CodeSyntaxParser();
    }

    protected String filter( String content ) {

        return highlightCode( content );
    }
	
	public void setCodeSyntaxParser( CodeSyntaxParser csp ) {
		
		this.csp = csp;
	}

    private String highlightCode(String s) {

        if(s == null || s.length() == 0)
            return s;
        StringBuffer stringbuffer = new StringBuffer();
        boolean flag = false;
        boolean flag1 = false;
        int i;
        int j;
        int k;
        for(k = 0; (i = s.indexOf("[code]", k)) >= 0; k = j + 7)
        {
            if((j = s.indexOf("[/code]", i + 6)) < 0)
                j = s.length() - 7;
            stringbuffer.append(s.substring(k, i));
            stringbuffer.append("<pre>");
            for(StringTokenizer stringtokenizer = new StringTokenizer(s.substring(i + 6, j), NEW_LINE); stringtokenizer.hasMoreTokens(); stringbuffer.append(NEW_LINE))
                stringbuffer.append( csp.syntaxHighlight(stringtokenizer.nextToken()));

            stringbuffer.append("</pre>");
        }

        stringbuffer.append(s.substring(k, s.length()));
        return stringbuffer.toString();
    }
}

⌨️ 快捷键说明

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