日記
Markdownパーサー
今日もやりました、先月からやっているMarkdownパーサーの実装。
Block Quoteの実装に入り、基礎的なBlock Quoteのテストは成功するように。Block Quote内部の先頭と末尾の空行を無視する、といった細かい部分がまだ実装できていない。
> foo
bar
上のMarkdownは、下のMarkdownと同じように変換される。
> foo
> bar
この仕組みを上手く実装するのは大変だ。なぜなら、もしこれらを素朴に同一に扱えるようにしてしまうと、次のMarkdownと…
> foo
> ---
次のMarkdownとを同一に扱ってしまいそうになり、setext headingを利用したh2要素と扱ってしまいがちだが、実際にはhr要素として扱うべきだからだ。
> foo
---
Maybe paragraph or setext headingなテキストノードを処理している間は、Laziness block quoteな特性を利用している行はsetext headingとしては処理しない、といった細かい条件分岐が必要になる。実装が複雑になっていく…