textile-jを使ってWiki文法をXHTMLに変換する
textile-jというWikiパーサが簡単に使えそうだったので試してみた。
サンプルコード
import java.io.StringWriter; import net.java.textilej.parser.MarkupParser; import net.java.textilej.parser.builder.HtmlDocumentBuilder; import net.java.textilej.parser.markup.Dialect; import net.java.textilej.parser.markup.confluence.ConfluenceDialect; import net.java.textilej.parser.markup.mediawiki.MediaWikiDialect; import net.java.textilej.parser.markup.textile.TextileDialect; import net.java.textilej.parser.markup.trac.TracWikiDialect; public class Main { public static void main(String[] args) throws Exception { String text = "*太字*"; Class[] dialects = { TextileDialect.class, ConfluenceDialect.class, MediaWikiDialect.class, TracWikiDialect.class }; for (Class clazz : dialects) { System.out.format("%s: %s\n", clazz.getSimpleName(), textToHtml(text, clazz, true)); System.out.format("%s: %s\n", clazz.getSimpleName(), textToHtml(text, clazz, false)); } } static String textToHtml(String textile, Class<? extends Dialect> clazz, boolean isDocument) throws Exception { StringWriter sw = new StringWriter(); HtmlDocumentBuilder builder = new HtmlDocumentBuilder(sw); builder.setEmitAsDocument(isDocument); MarkupParser parser = new MarkupParser(clazz.newInstance()); parser.setBuilder(builder); parser.parse(textile); return sw.toString(); } }
実行結果
TextileDialect: <?xml version='1.0' ?><html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><strong>太字</strong></p></body></html> TextileDialect: <p><strong>太字</strong></p> ConfluenceDialect: <?xml version='1.0' ?><html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><strong>太字</strong></p></body></html> ConfluenceDialect: <p><strong>太字</strong></p> MediaWikiDialect: <?xml version='1.0' ?><html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><ul><li>太字*</li></ul></body></html> MediaWikiDialect: <ul><li>太字*</li></ul> TracWikiDialect: <?xml version='1.0' ?><html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p>*太字*</p></body></html> TracWikiDialect: <p>*太字*</p>
その他
他にも、同じjarにAnt TaskやEclipse Pluginも入っているらしいのでいろいろできるっぽい。