📄 java2ansi.java
字号:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.Collection;
import java.util.HashSet;
import java.util.StringTokenizer;
/**
* @author Jove
*/
public class Java2Ansi {
private static class UbbStyle {
String begin, end;
UbbStyle(String begin, String end) {
this.begin = begin;
this.end = end;
}
String getBegin() {
return begin;
}
String getEnd() {
return end;
}
}
public static final int COMMENT = 3;
public static final int LINE_COMMENT = 2;
public static final int NONTYPE = -1;
public static final int QUOTE = 1;
/*
* 要求:
* 1. 最左边显示行号(可以设置)-优先级低
* 2. 关键字用[b][color=blue]
* 3. 注释(包括行注释和块注释)用[color=blue]
* 4. 字符串或字符用紫色
*/
static Collection reserved, classNames, methods;
static final char ESC=(char)27;
static final UbbStyle reservedWordsStyle =
new UbbStyle(ESC+"[1;34m", ESC+"[m");
static final UbbStyle styleComment =
new UbbStyle(ESC+"[32m", ESC+"[m");
static final UbbStyle styleQuote =
new UbbStyle(ESC+"[35m", ESC+"[m");
static final UbbStyle sytleClassName =
new UbbStyle(ESC+"[1;31m", ESC+"[m");
static final UbbStyle sytleMethod =
new UbbStyle(ESC+"[32m", ESC+"[m");
public static final int WORD = 0;
private static String readFile(String filename) {
try {
InputStream is = Java2Ansi.class.getResourceAsStream(filename);
byte[] b = new byte[is.available()];
is.read(b);
is.close();
return new String(b);
} catch (Exception e) {
return "";
}
}
static {
StringTokenizer st = null;
st = new StringTokenizer(readFile("classnames.txt"));
classNames = new HashSet();
while (st.hasMoreElements()) {
classNames.add(st.nextToken());
}
st = new StringTokenizer(readFile("reservedWords.txt"));
reserved = new HashSet();
while (st.hasMoreElements()) {
reserved.add(st.nextToken());
}
st = new StringTokenizer(readFile("methods.txt"));
methods = new HashSet();
while (st.hasMoreElements()) {
methods.add(st.nextToken());
}
}
protected int currentType = NONTYPE;
protected String convert(String source) {
try {
StringWriter writer = new StringWriter(source.length() * 2);
PrintWriter out = new PrintWriter(writer);
BufferedReader reader =
new BufferedReader(new StringReader(source));
String line = null;
while ((line = reader.readLine()) != null) {
out.print(convertLine(line)+"\n");
}
out.flush();
return writer.toString();
} catch (Exception e) {
return "";
}
}
/**
* 将一行内容转换为具有风格的内容。
* @param line 一行文本
* @return 转换后的结果
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -