AST /ast
/ast 不加载解析器与 React,可以在服务端、Worker 或纯数据处理脚本中使用。
节点基础
id在单个快照内唯一,不保证跨编辑稳定。position的行列从 1 开始,offset 从 0 开始;生成节点会省略该字段。origin指向原始源码语法节点与范围。data用于自定义扩展数据。
节点类型
扩展标签即使没有专门的默认展示,也使用 extension 节点并保留名称与内部原文,不会进入 unknown。
自定义节点需要同时扩展 WikitextNodeMap 并在准备阶段注册转换函数;未注册转换函数的节点会产生诊断并降级为源码卡片。
源码语法树
retainSyntax: true 时,解析快照会包含 syntax:
源码语法树供 playground、源码范围与源码映射使用;它不决定渲染结构。语义 AST 才是渲染输入。
查询
- 零长度节点默认不参与
findNodeAtOffset的选择;可用includeZeroLength调整。 - 生成内容没有
origin时,getSourceText返回空字符串。 - 需要按 id 建索引时用
flattenNodes自行生成Map。 flattenNodes与findNodeById的内部缓存在准备阶段重新编号后自动失效;插件在此之前持有的旧数组或 Map 不会被原地更新。- 查询转换后的节点时,必须使用渲染快照;不要用渲染快照里的 id 查原始解析快照。
结构化辅助函数
getTemplateParameters 同时接受 template 与 parserFunction,返回参数节点、名称、是否匿名与从 1 开始的序号。
getFileParameters 派生:
name、parameters、caption、captionNodes。alt、link、lang、page、className、upright。width/height(支持200、200px、200x100px,最终显示时限制在 1–4096)。format、alignment、verticalAlignment、border。
说明文字优先取显式 caption=,否则取未命名说明;键名不会进入说明文本。
源码归一化
- 只做 CRLF / CR → LF,不改变其他字符。
DEFAULT_MAX_SOURCE_LENGTH为 100,000;超过时抛WikitextParseError("SOURCE_TOO_LONG")。- 所有坐标基于归一化后的 LF 源码;库不提供原源码的 offset 映射。
序列化
解析快照:
渲染快照:
恢复函数会校验结构版本、源码字符串、根节点、meta、headings、diagnostics 与 policy/labels 的完整形状,以及固定节点预算;渲染快照还会重新执行最终清洗与整理。快照内的 policy、labels 与 authorizedImages 属于可信边界,重新清洗只用于重建派生结构。不合法时抛:
- 解析快照:
WikitextError("INVALID_DOCUMENT")。 - 渲染快照:
WikitextError("INVALID_DOCUMENT")(与解析快照同一基类,不含stage字段)。
版本常量
版本变化意味着快照结构不兼容;缓存或跨进程传输时应把版本写入缓存键。