akabekobeko / examples-remark-plugin-micromark

[WIP] A repository for testing the remark (v13 with micromark) implementation used by VFM.
MIT License
0 stars 0 forks source link

Implement MDAST translation #2

Closed akabekobeko closed 3 years ago

akabekobeko commented 3 years ago

Implement MDAST translation. Aim for VFM ruby to work with remark-parse v9.

Adopt if MDAST translation can be done properly through remark-parse even if it is not a micromark plugin.

akabekobeko commented 3 years ago

以下の remark プラグイン群から micromark を利用せず unist-util-visit-parentstext を独自解析して MDAST 化しているものを参考にする。

remark-parse v9 以降では CommonMark が remark-parse、GFM は remark-gfm で処理されるため、残った text に対して

  1. text を visit して node を得る
  2. node.value の文字列に対して構文を正規表現で検索
  3. 構文が検出されたら範囲を記録
  4. 構文の範囲を MDAST 化
  5. text 中の構文を 4 に置き換えて整合をとるように node を加工?

5 の部分をどうすればよいかわからないので冒頭の条件を満たす既存プラグインのコードを読み、MDAST、HAST、HTML などを console.log でチェックしながら学習する。

akabekobeko commented 3 years ago

remark-breaksmicromarkremark 依存もなく、実装もシンプルで参考になりそう。

前述の手順すべてを網羅している。

akabekobeko commented 3 years ago

構文排他が必要な場合は Unified ではなく micromark プラグインとして実装する必要がる。micromark 非依存のサンプル実装は既に実施したので本件は close して別途 #1 へ対応する。