前回 では当ブログの実装方針について簡単に述べましたが、その後で Markdown の変換処理まわりを改修しました。
簡単に言うと、以前までの実装では remark-rehype
を介して一度 mdast
を hast
へと変換していたところを、mdast
から直接 React コンポーネントへの変換を行うように修正しました。
これにより Markdown側の木構造を自然な形で React/Next.js 側に落し込むことが出来るようになったので、Markdown 側で callout や特殊なコンテンツの埋め込みなどを行うためのカスタム要素を追加することが容易になることが期待できます。
あくまでも hast
への変換を経由することに伴う煩雑さを回避するのが目的なので、remark
内で簡潔している部分については従来通り既存のプラグインを使用するだけに留めています。
一方で、従来は remark-rehype
(あるいはその実体である mdast-util-to-hast
)が担っていた変換処理を自前で実装する必要が生じました(例えば、脚注のリンク付与など)。
とはいえ、この辺りの実装が必要となる記事が現状そこまでないので、現状では簡潔な実装に留めつつ必要に応じて整理していきたいと考えています。