package cn.newgxu.bbs.common.filter.ubb;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cn.newgxu.bbs.common.filter.AbstractBaseFilter;
import cn.newgxu.bbs.common.filter.Filter;
/**
*
* @author ddy
* @since 4.0.0
* @version $Revision 1.1$
*/
public class FaceFilter extends AbstractBaseFilter {
private static final String FACE_PATTERN_STRING = "\\[face=(新宋体|宋体|楷体_GB2312|黑体|隶书|Andale Mono|Arial|Arial Black|Book Antiqua|Century Gothic|Comic Sans MS|Courier New|Impact|Georgia|Tahoma|Times New Roman|Trebuchet MS|Script MT Bold|Stencil|Verdana|Lucida Console)\\](.*?)(\\[\\/face\\])";
private static final String FACE_APPEND_1 = "<font face=";
private static final String FACE_APPEND_2 = ">";
private static final String FACE_APPEND_3 = "</font>";
public FaceFilter(Filter filter) {
super(filter);
}
public String convert(String input) {
try {
return faceConverter(input);
} catch (Exception e) {
return input;
}
}
private String faceConverter(String input) throws Exception {
Pattern pattern = Pattern.compile(FACE_PATTERN_STRING, 2);
Matcher matcher = pattern.matcher(input);
StringBuffer sb = new StringBuffer();
for (boolean flag = matcher.find(); flag; flag = matcher.find()) {
matcher.appendReplacement(sb, "" + FACE_APPEND_1 + matcher.group(1)
+ FACE_APPEND_2 + matcher.group(2) + FACE_APPEND_3);
}
matcher.appendTail(sb);
return sb.toString();
}
}