📄 filtercodehighlight.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 + -