1

UnifiedRemark-Parseを使用して GitHub フレーバーのマークダウン ファイルを解析し、MDAST を生成しようとしています。そのほとんどを正確かつ簡単に解析できますが、HTML タグとそのコンテンツを AST から解析するのに問題があります。

AST では、HTML タグとそのコンテンツは、親子ではなく兄弟として表されます。たとえば、<sub>hi</sub>に解析されます

[
  {
    "type": "paragraph",
    "children": [
      {
        "type": "html",
        "value": "<sub>",
      },
      {
        "type": "text",
        "value": "hi",
      },
      {
        "type": "html",
        "value": "</sub>",
      }
    ]
  }
]

理想的には、次のように解析したいと思います

[
  {
    "type": "paragraph",
    "children": [
      {
        "type": "html",
        "value": "sub",
        "children": [
          {
            "type": "text",
            "value": "hi",
          },
        ]
      },
    ]
  }
]

タグの種類とその内容にアクセスできるようにします。(具体的には、タグとそのコンテンツは私の目的には必要ないため、スキップすることが私の目標です)

これは私が現在使用している構成です:

import unified from 'unified';
import markdown from 'remark-parse';
import type {Block} from '@notionhq/client/build/src/api-types';
import {parseRoot} from './internal';
import gfm from 'remark-gfm';

export function parseBody(body: string): Block[] {
  const tokens = unified().use(markdown).use(gfm).parse(body);
  return parseRoot(tokens);
}

だから、私の質問は:そうするようにRemarkを設定する方法はありますか/これを行うためのRemarkプラグインはありますか? そうでない場合、そうするプラグインを作成するにはどうすればよいですか?

ありがとう。

4

1 に答える 1