以前の日記で、Radeox をコマンドラインから起動して、簡易的にテストする方法を書いた。が、この場合、いくつか弱点があって、「正直使えない」感じだった。ので、克服するためのテストツールを作ってみた。
ここで言ってる弱点っていうのは、以下の 2 点。
- 1 行入力するごとにレンダリング (XHTML への変換処理) が実行されてしまうため、複数行のレンダリングをテストすることができない。
- クラスパスを追加しても認識されない (っぽい?) ので、自作マクロのテストができない
コマンドラインから起動すると radeox.jar 内の org.radeox.example.InteractiveExample クラスが呼ばれる。このクラスと radeox.org サイトにある PDF を見ながら、テスト用クラスを作ってみた。
import java.io.FileReader; import java.io.IOException; import org.radeox.api.engine.RenderEngine; import org.radeox.api.engine.context.RenderContext; import org.radeox.engine.BaseRenderEngine; import org.radeox.engine.context.BaseRenderContext; public class RadeoxTester { public static void main(String[] args) { RenderEngine engine = new BaseRenderEngine(); RenderContext ctx = new BaseRenderContext(); for (String arg : args) { try { System.out.println(engine.render(new FileReader(arg), ctx)); } catch (IOException e) { System.out.printf("[ERR] ファイル '%1s' の処理に失敗しました。\n", arg); System.out.println(e.getLocalizedMessage()); e.printStackTrace(System.out); } } } }
引数にファイルパスを渡すと、Radeox でレンダリングを実行し、結果を標準出力に吐き出す。
ついでなので、バッチから起動できるようにしてみる。マクロをテストする前提で書くと、こんな感じか。
@echo off set TEST_BAT_PATH=%~dp0 java -classpath %TEST_BAT_PATH%\radeox.jar;%TEST_BAT_PATH%\commons-logging.jar;%TEST_BAT_PATH%\RadeoxTester.jar;%1 RadeoxTester %2 %3 %4 %5
あとはコマンドプロンプトから
radeox-test.bat FooMacro.jar test-data.txt > test-result.txt
みたいに実行してやれば、結果がファイルに落とせる。