@ diglot/ mdast (英语)
注释/ mdast 适配器 挖掘机,用于标出 remark-parse, (中文(简体) ), remark-gfm, (中文(简体) ), remark-frontmatter 财务报告和审定财务报表 remark-mdc,用于 磁共振适合 Astro 、 Docuraurus 、 星光 或 平地标记下源 .
pnpm add @diglot/mdast @diglot/core
使用量
import { apply, extract } from '@diglot/mdast'
const segments = await extract(markdown, { file: 'docs/intro.md' })
const { markdown: translated, report } = await apply(markdown, new Map([[segments[0].hash, 'Introduction']]))
-
extract(source, { file, format, parser, policy })返回与@diglot/comark用于同一文档,并有节点精确的行位置。 从源头切出受保护的跨度. -
apply(source, translations, { format, parser, policy })验证每个翻译并将其切入源,所以所有外翻译单元都被保存为字节. Frontmatter和YAML道具被重写为YAML scalar;内置道具保留其属性语法;代码注释保留其缩进和注释语法. 无法在来源中找到的单位报告为unaddressable并保留其源文本. -
apply(source, translations, { onSegment })电话onSegment带有ApplySegmentEvent每个段。 属性设置为target.setAttribute(name, value)标题、段落和表格单元格返回为annotations;其他部分有null目标.annotate(tree, annotations)设定为data.hProperties将紧凑的列表项目的段落作为<span>因此他们的属性到达了 HTML.const { markdown: translated, annotations } = await apply(markdown, segment => records.get(segment.hash), { onSegment(event) { if (event.outcome === 'missing' || event.outcome === 'rejected') event.target?.setAttribute('lang', 'en') }, }) const tree = processor.parse(translated) annotate(tree, annotations) -
parse(source, { format, parser })暴露适配器使用的管道.
解析器
extract, (中文(简体) ), apply 财务报告和审定财务报表 parse 带一个 parser 选项. remark 默认值. satteri 用途 萨特里,用Rust写的Markdown 解析器,速度要快得多:
pnpm add satteri
const segments = await extract(markdown, { parser: 'satteri' })
Sätteri读取指令的方式与Starlight使用的评论指令相同. ::: 边框等块被翻译为组件,其中任意一个是 parser,而Sätteri 则有其标题(:::tip[Title])也译出. 带有标签或属性的内含指令,例如 :badge[New],作为占位符保存。 Sätteri 没有 MDC 支持, 因此块组件如 ::card 没有解析,它们的标记可以最终被翻译成文本。 保留 remark 用于 MDC 源代码。 对于其他的平分法,两个解析器都产生相同的片段和散列,因此现有的译名继续应用. 一个例外: Sätteri 跳过 TOML 前题(+++评注为一款。 传出同样的 parser 改为 extract 财务报告和审定财务报表 apply。 。 。 .
磁共振
MDX是加减JSX组件, {expressions} 财务报告和审定财务报表 import 财务报告和审定财务报表 export 发言。 适配器在 file 结束于 .mdx,或者当你通过 format: 'mdx'数字 :
const segments = await extract(source, { file: 'docs/cards.mdx' })
两个解析器都读取了 MDX, 注释为 remark-mdx 和Sätteri 和它自己的 MDX parser, 它们产生相同的片段和散列。 MDX从不读作MDC,但是 ::: 指令,如"星光"边框,用两种格式阅读。 一个例外: Docusaurus 提醒在空格后加一个标题(:::tip Title) (中文(简体) ). Sätteri将其读作指令并删除标题,而评论只读出括号中的标题并保留这些行为正文.
JSX元素内部的文本像MDC组件的内容一样被翻译. 一个组件的策略列表也被翻译的字符串道具,与元素的kebab-case名称相匹配,所以 <LinkCard title="…"> 使用 link-card。带有表达值的道具,例如 title={name}独自一人 句子中的JSX元素,例如: <kbd>Ctrl</kbd>,以及诸如 {count} 成为占位符. import 财务报告和审定财务报表 export 他们自己的语言和表达方式,包括评论,不是翻译.
校验拒绝包含未脱逃翻译 { 或 HTML, 以及 apply 逃过其他的劫难 < mDX会读作标签,所以应用翻译不能在页面上添加JSX或表达. 一个被翻译道克保留了源的引文字符,除非该值包含该字符而不是另一个字符. 当值包含两者时,引用字符为 " 或者说 '。 。 。 .
标题锚由出自标题文本的渲染器生成,所以被翻译的标题会得到翻译锚地,除非出自渲染器支持明显的id.