GitHub のアラート記法に対応した #

GitHub でおなじみのアラート記法、> [!NOTE] などをこのブログでも描けるようにした(Issue #65)。この記事自体がデモになっていて、5 種類すべてを後半に並べてある。

仕様 #

引用の先頭行が [!NOTE]、[!TIP]、[!IMPORTANT]、[!WARNING]、[!CAUTION] のどれかひとつだけのとき、その引用をアラートとして扱う。マーカーは大文字小文字を区別せず、小文字に正規化して種類(kind)として持つ。GitHub に合わせて、以下のときは普通の引用のままにした。

  • マーカーが先頭行でない(引用の途中に現れる)
  • マーカーと同じ行に本文が続く
  • 知らない種類([!HINT] など)

書き間違いをアラートにしてしまうより、ただの引用に留めるほうが安全だからだ。

Note

先頭行にマーカーだけを置く。マーカー自身は描かれず、種類とタイトルになる。

pico.css v2 で足りるか #

実装の前に、素の pico.css v2 でこの見た目が組めるかを確認した。結論として、アラートやコールアウト相当のコンポーネントは pico v2 にはない。blockquote には先頭側に 0.25rem のバーを引くだけだ。

そこで描画は blockquote のままにしてクラスを足し、種類ごとの色とタイトルは site.css に書いた。色は GitHub のダークテーマのパレットをそのまま借り、タイトルのアイコンは octicons を data URI の mask で出している。mask にするとアイコンが background-color の色で描かれるので、5 種類を同じ形で扱える。

実装 #

tinymarkdown には Quote の隣に Alert{kind, children} というブロックを足した。引用として集めた行の先頭がマーカーなら、その行を外して残りを普通に解析する。つまりアラートの中身は引用と同じく何でも入る。Go 版、MoonBit 版、そこから生成される ts 版、全部に同じ形で入れ、テストもいつも通り case をミラーした。

Tip

記事を書く側は、いつもの引用の先頭に [!種類] を足すだけでよい。

デモ #

Note

流し読みの人にも知っていてほしい、補足の情報。

Tip

もっと上手く、もっと楽にやるための助言。

Important

目的を達成するために必要な、中心となる情報。

Warning

問題を避けるために、今すぐ注意してほしい情報。

Caution

ある操作がもたらしうる、リスクや悪い結果への忠告。

強さの目安は「NOTE が脚注的な補足、TIP が近道、IMPORTANT が本題、WARNING が注意、CAUTION が警告」くらいの順だろうか。

Important

マーカーを書かない引用は、これまで通りの見た目のまま。

おわりに #

「引用にちょっと色を付ける」だけの機能だが、記事中の注意書きが目に留まるようになった。octicons と GitHub のパレットを借りたおかげで、見た目もそれらしくなったと思う。