我正在尝试使用Unified和Remark-Parse解析 GitHub 风格的降价文件以生成 MDAST。我能够正确且轻松地解析其中的大部分内容,但是我无法从 AST 中解析 HTML 标记及其内容。
在 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 插件可以做到这一点?如果没有,我将如何创建一个这样做的插件?
谢谢。