SnipSnap: そのまま吐き出すマクロ

SnipSnap で、{code} マクロを使ってコードフラグメントを貼り付ける時、その内容がそのままブラウザに出力されることを期待するのは、自然なことだと思う。が、実際には、空行が p 要素に置き換えられ、元のフラグメントにあった空行は保持されない (改行が <p class="paragraph"/> に置換される。p 要素は改行じゃないんだと、学校で教わらなかったのかぁ〜!!)。
で、試しに、そのまま吐き出すマクロを作ってみた。

package ......;

import org.radeox.macro.Macro;
import org.radeox.macro.BaseMacro;
import org.radeox.macro.parameter.MacroParameter;

import java.io.Writer;
import java.io.IOException;

public class BlockMacro extends BaseMacro {
  public String getName() {
    return "block";
  }

  public String getDescription() {
    return "Quote text block.";
  }

  public void execute(Writer writer, MacroParameter params)
      throws IllegalArgumentException, IOException {
     
     String content = params.getContent();
     writer.write("<pre class=\"block\">\n");
     writer.write(content);
     writer.write("</pre>\n");
  }
}

ところが、このマクロを使っても、空行は置換されてしまう。フィルタのせいか、レンダリングエンジンのせいか。どっちにしろ改造は面倒くさそうなので諦めた。上のマクロは、ハイライトなし版 {code} として使うことにする。