続・Haskellを使ってmarkdownをパースしてはてな記法に変換する

前回に続き、Haskellmarkdown -> はてな記法の変換パーサを書いてみた話。


前回の最後に書いたToDoは以下の通り。

  • リスト表記のインデント表記に対応
  • インライン記法への対応


昨日、今日と帰宅してからの数時間を費やしたところ、
意外にあっさりと解決できた。
まあ、仕組み上実現可能であることは明らかなのだから、そりゃ出来るだろうって話だが、
Haskellレベルが1ぐらい上がった感じで、ちょっと嬉しかったり。


昨日、Parsecをいじっていた時に、GenParser tok st aの型はこうやって使うのか!と天啓が降りてきて、なんか色々と書けるようになった。
分かんねえなーと思ってたものが、こうすりゃちゃんと動くんじゃね?という想定通りに動くと非常に気持ちいいということを、改めて実感した。
Haskellが抽象的な型の変換で処理を捉えるということについて、ちょっとだけ理解できたかもしれない。
とは言え、IOモナドみたいな一方向モナドを利用する機会が出てきたら、また地獄を見るんだろうな。
モナド合成とか理屈は分かってきたが、活用できる気がしねえ・・・。


というわけで、現在対応しているのは以下の記法。

  • 頭に#をつけるタイプの見出し記法。見出しレベル対応。
  • 順序無しリスト(スペース4つ、もしくはタブ1つで1レベルインデント)
  • 順序付きリスト(スペース4つ、もしくはタブ1つで1レベルインデント)
  • ノーマルなパラグラフ
  • 見出し、リスト、パラグラフ中に存在するリンク記法


今後のToDo

  • コードブロック対応
  • 引用ブロック対応
  • 画像貼りつけ対応