@ discord/ markdown- wasm
先决条件
构建
pnpm build
使用量
import { parse } from '@discord/markdown-wasm';
const ast = parse('Hello world!');
parse 选择 flags 第二,将语法选为 OR Syntax
位元,该软件包也导出。 默认情况下,每个语法都会分析 0数字 :
import { Syntax, parse } from '@discord/markdown-wasm';
const noMentions = parse('@everyone **hi**', Syntax.ALL & ~Syntax.MENTIONS);
初始化
软件包没有顶级等待,所以导入它就永远不会使模块图形变换为Aync——它可以是
require()d,并捆绑不支持顶级等待的目标.
代价是,在第一次剖析之前,必须先将原地进行即时分析。 节点自己在 首先使用、读取并同步编译文件。 没有别的地方可以: 字节只到 浏览器拒绝在主线程上同步编译 4KB 以上的缓冲 无论如何。 所以其他任何地方,在启动时,它一次:
import { init, parse } from '@discord/markdown-wasm';
await init();
const ast = parse('Hello world!'); // and everything downstream stays sync
如果您的捆绑者或主机已经将原地交给您, 请跳过获取器 initSync通过 a
WebAssembly.Module,而不是字节 – 编译字节是4KB盖适用于:
import { initSync, parse } from '@discord/markdown-wasm';
initSync(wasmModule);
在两次通话之前分析.
失去的树
parseLossless 返回丰富文本的树:节点
降标意味着什么 象征着内容的每个字符都按顺序排列
分界线,出逃,标记和行尾. 加入标志 text 给回内容
没错 每个节点和标志都有一个 span,在 UTF-16 代码单元中,它会索引字符串
直接 :
import { parseLossless } from '@discord/markdown-wasm';
const content = '**hi** 🦶';
const tree = parseLossless(content);
// tree.children[0] is the paragraph; its first child, the bold, spans `**hi**`
const { start, end } = tree.children[0].children[0].span;
content.slice(start, end); // '**hi**'
这需要 flags 作为 parse 已经 这些类型是: LosslessNode 还有朋友
@discord/markdown-types。 。 。 .