GFMの見出しリンク

GitHubではREADME.mdのレンダリングにはGitHub Flavored Markdownが使われている。その基本はRedcarpetみたいなんだけど、見出しリンクがなんか違う気がするなーと思った。特に半角記号の辺り。GitHubカンニング・ペーパーのToCを作ろうとした時に色々面倒だった。

Demo: GFMの見出しリンクで削除される文字列を検証

Gistでも同じだろうと思うので、Gistでテストした。ほとんどはUTF-8でURLエンコードされると思って良さそうだったので、半角記号の扱いを主に重点的にチェックしている。

  • 空白は-に変換される
  • a-zA-Z-_はそのまま
  • Àより前の半角記号は削除される
    • ただしªµºは残る
    • ソフトハイフンが挙動不審
  • 残りはUTF-8でURLエンコード
  • A-Zは小文字に変換される

という感じのようだ。日本語+英語となるとハイフンとアンダースコア以外の記号を削除してURLエンコード、最後に小文字化で良さそう。