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 に記述するのではなくて、直接グローバルな設定ファイルの冒頭に記述してしまう、ということです。
動作確認 → ページタイトル — http://example.com
ただ、リンク関連のインラインマクロを asciidoctor でやる方法はまだ調べ中です…
どちらにでも通る解決策としては、
:url: http://example.com {url}[ページタイトル -- {url}]
カンマ区切りの Attribute entry の整形
Updated 2017-12-17T06:22+09:00一見すると、 eval: 使ってできそうです。
:tags: taga, tagb, tagc {eval:", ".join(map(lambda x: "#%s" % x.strip(), "{tags}".split(","))) if "{tags}" != "" else None} => <div class="paragraph"><p>#taga, #tagb, #tagc</p></div>
狙い通りの出力が得られました。
これを ‘Last updated’ の替わりに出力することにしよう。
こんにちわ!
Updated 2024-10-11T01:38+09:00ポチポチとがんばります!
このご時世に make と asciidoc で作成しています。ウェブサイトっぽいものになれば良いなあと思って始めました。
今ちらかしているものまとめ。
-
https://d.hatena.ne.jp/hchbaw → Wayback Machine