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 polly
* @since 4.0.0
* @version $Revision 1.1$
*/
public class EmailFilter extends AbstractBaseFilter {
private static final String EMAIL_PATTERN_STRING = "\\[email=(.*)\\](.*)(\\[\\/email\\])"
+ "|\\[email\\](.*)(\\[\\/email\\])";
private static final String EMAIL_APPEND_1 = "<a href=\"mailto:";
private static final String EMAIL_APPEND_2 = "\">";
private static final String EMAIL_APPEND_3 = "</a>";
public EmailFilter(Filter filter) {
super(filter);
}
public String convert(String input) {
try {
return emailConverter(input);
} catch (Exception e) {
return input;
}
}
private String emailConverter(String input) throws Exception {
Pattern pattern = Pattern.compile(EMAIL_PATTERN_STRING, 2);
Matcher matcher = pattern.matcher(input);
StringBuffer stringbuffer = new StringBuffer();
for (boolean flag = matcher.find(); flag && matcher.group(0) != null; flag = matcher
.find()) {
if (matcher.group(1) != null) {
matcher.appendReplacement(stringbuffer, EMAIL_APPEND_1
+ matcher.group(1) + EMAIL_APPEND_2 + matcher.group(2)
+ EMAIL_APPEND_3);
continue;
}
if (matcher.group(4) != null) {
matcher.appendReplacement(stringbuffer, EMAIL_APPEND_1
+ matcher.group(4) + EMAIL_APPEND_2 + matcher.group(4)
+ EMAIL_APPEND_3);
}
}
matcher.appendTail(stringbuffer);
return stringbuffer.toString();
}
}