URL を書くインラインマクロ

URL を書く時に、結果として、

<a href="http://example.com">ページタイトル -- http://example.com</a>

という形式にするのに間違いがないなるべく簡単な記法を考えます。

というのは、素直に asciidoc で記述するとすると、以下のようになります。

http://example.com[ページタイトル -- +++http://example.com+++]

http://example.com を2回入力する必要があるので、コピペ間違えをやる気がする。それを避けることができればオーケー、ということにします。

asciidoc のインラインマクロでやるとすると、設定ファイルに以下の記述が必要になります。

[macros]
(?su)(?P<name>u):\[(?P<attrlist>.*?)(?<!\\)\]=
[tu-inlinemacro]
<a href="{1}">{2} -- +++{1}+++</a>

ところが既存のマクロとの関係、特に http: を見ているマクロの前に u: マクロに動いてもらわないと {1} の部分が http: マクロで展開されたものになってしまう。こんな風に。

<div class="paragraph"><p><a href="<a href="http://example.com">http://example.com</a>">ページタイトル -- +++<a href="http://example.com">http://example.com</a>+++</a></p></div>

解決策としては、 ~/.asciidoc/asciidoc.conf に記述するのではなくて、直接グローバルな設定ファイルの冒頭に記述してしまう、ということです。

ただ、リンク関連のインラインマクロを asciidoctor でやる方法はまだ調べ中です…

どちらにでも通る解決策としては、

:url: http://example.com

{url}[ページタイトル -- {url}]