package org.simon.jspwiki.filters; import com.ecyrd.jspwiki.filters.BasicPageFilter; import com.ecyrd.jspwiki.WikiContext; import de.java2html.Java2Html; import de.java2html.converter.Java2HtmlConversionOptions; public class Java2HTMLFilter extends BasicPageFilter { public String postTranslate(WikiContext wikiContext, String htmlContent) { StringBuffer buf = new StringBuffer(htmlContent); int i = -1, j = 0, k = 0; while ((i = buf.indexOf("<pre>", j)) != -1) { k = buf.indexOf("</pre>", j+5); if (k == -1) break; String code = buf.substring(i+5, k); String result = translateCode(code); int beforeLen = code.length() + 11; int afterLen = result.length(); buf.replace(i, k+6, result); j += afterLen - beforeLen; } return buf.toString(); } private String translateCode(String code) { Java2HtmlConversionOptions options = Java2HtmlConversionOptions.getDefault(); options.setTabSize(4); options.setShowLineNumbers(false); options.setShowTableBorder(false); return Java2Html.convertToHtml(code, options); } }