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} として使うことにする。