Radeox マクロを手軽にテストできるツール

以前の日記で、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

みたいに実行してやれば、結果がファイルに落とせる。