坪井です。
さまざまな方よりのアドバイスをいただき、なんとか解決できました。
ありがとうございます。
いろいろ試行錯誤したのですが、
まず、InlineParserを使う方法は問題があって断念しました。
パーサおよびビジタを流用可能だというところが非常に気にいったのですが、
VerbatimブロックをparseしてもVerbatimブロックと見なされることが多い
ため、今回の目的には向いていないようでした。
(インデントが深いVerbatimだとこのようになる)
最終的に、単純にパーシングを行うようにしました。
ext_VerbatimBlock_XXXでは、すでに<等がHTMLエスケープされてくるため、
正規表現に思うようにマッチせずはまりましたが(汗)。
つたないコードですが、一応載せておきます。
-------------
def ext_VerbatimBlock_EnableRD(content)
output = content.gsub(/\(\(<(([^|]+)\|)?([^&]+)>\)\)/) { |s|
label = $2
value = $3
if label == nil then label = value end
default_ref_ext(value, meta_char_escape(label))
}
return ("\n<pre>" << output << "</pre>\n")
end
-------------
RWiki式リンクだけではなく、foottext等へも対応しようと思ったのですが、
default_ref_ext相当のメソッドを使えばよい、というレベルで話がすみそうに
なかったので止めました。
もうちょっとうまく書けるとは思いますが、現状の力ではこんなところかなと
思います。
みなさん、ありがとうございました。
p.s.
Enumable#injectは1.7系のメソッドなんですね。便利そうです。
---------
坪井創吾, Sougo Tsuboi
sougo.tsuboi / toshiba.co.jp
Knowledge Media Laboratory, TOSHIBA R&D Center.