以前の日記で、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
みたいに実行してやれば、結果がファイルに落とせる。