Skip to content
Bhsd edited this page Nov 3, 2026 · 57 revisions

Other Languages

简介

WikiParser-Node 是一款由 Bhsd 开发的基于 Node.js 环境的离线维基文本语法解析器,可以解析几乎全部的维基语法并生成语法树,还可以很方便地对语法树进行查询和修改,最后返回修改后的维基文本。

语法树的每个节点对应一个仿照 HTMLElement 类设计的类 Token。本 Wiki 将依次介绍不同维基语法对应的各类 Token 可用的属性和方法。

使用者

Helix qBittorrent MediaWiki euporie Flow Control LSP for Sublime Text

其他版本

这个轻量版本提供了 CLI,但仅保留了解析和语法错误分析功能。虽然牺牲了语法树修改和 HTML 渲染的能力,但换来了 2.4 倍的执行速度提升。可以在 CI 流水线中集成 WikiLint 以自动检查维基内容(例如 qBittorrent)。

这个版本为 Wikitext 语言服务器协议提供支持,可为 VS Code、Sublime Text 和 Helix 等编辑器提供多种语言服务。

可用的语法检查规则列表请见这里。

注意: WikiLint 的主版本号始终比 WikiParser-Node 的主版本号高 1。

一个轻量级版本,仅支持模板的解析和操作。这个版本适用于仅需要处理模板的使用场景,例如某些专注于模板操作的的机器人或网络工具(例如 GANReviewTool)。

兼容浏览器的版本,可用于代码高亮或是搭配 CodeMirror 和 Monaco 等编辑器作为语言服务器协议(LSP)插件(使用实例展示)。自 MediaWiki 1.45 版本起已集成到 MediaWiki 官方 CodeMirror 扩展中。

为了确保在浏览器环境中获得最大的响应速度,解析器经过了速度和内存使用的优化,同时有意排除了语法树修改和 HTML 渲染功能,以防止阻塞主线程。

安装方法

Node.js

请根据需要需要安装对应的版本(WikiParser-Node 或 WikiLint),如:

npm i wikiparser-node

或

npm i wikilint

可选依赖

你可以安装以下任意可选库来启用高级功能:

库 功能
mathoid-texvcjs 诊断和渲染 <math> 和 <chem> 扩展标签
stylelint-config-recommended 诊断 style 属性
vscode-css-languageservice style 属性的 CSS 语言服务
vscode-html-languageservice HTML 标签的语言服务
vscode-json-languageservice <templatedata>、<mapframe> 和 <maplink> 标签的 JSON 语言服务
ajv + ajv-errors 渲染 <templatedata> 扩展标签时的 JSON Schema 验证
katex 渲染 <math> 和 <chem> 扩展标签
prismjs + prism-wiki 渲染 <syntaxhighlight> 扩展标签时的语法高亮
# 完整的语言服务特性(用于 `Parser.createLanguageService()`)
npm i mathoid-texvcjs stylelint-config-recommended vscode-css-languageservice vscode-html-languageservice vscode-json-languageservice

# 完整的 HTML 渲染特性(用于 `Parser.toHtml()`)
npm i ajv ajv-errors katex mathoid-texvcjs prismjs prism-wiki

浏览器

可以通过 CDN 下载代码,如:

<script src="//cdn.jsdelivr.net/npm/wikiparser-node"></script>

或

<script src="//unpkg.com/wikiparser-node/bundle/bundle-lsp.min.js"></script>

更多浏览器端可用的插件请查阅对应文档。

使用方法

请查阅主入口文档和各类 Token 对应的文档。

示例

规则

一份完整的语法检查规则列表请见这里。

测试

WikiParser-Node 已使用包含约 3,000 个测试用例的官方 MediaWiki PHP 解析器测试集进行了广泛的测试,这些测试用例涵盖了维基文本的各种边缘情况和特殊情况。测试结果可在这里查看。

Clone this wiki locally