-
Notifications
You must be signed in to change notification settings - Fork 3
Home
WikiParser-Node 是一款由 Bhsd 开发的基于 Node.js 环境的离线维基文本语法解析器,可以解析几乎全部的维基语法并生成语法树,还可以很方便地对语法树进行查询和修改,最后返回修改后的维基文本。
语法树的每个节点对应一个仿照 HTMLElement 类设计的类 Token。本 Wiki 将依次介绍不同维基语法对应的各类 Token 可用的属性和方法。
参见 WikiLint。这个轻量版本提供了 CLI,但仅保留了解析和语法错误分析功能,解析生成的语法树不能修改。这个版本为 Wikitext 语言服务器协议提供支持,可为 VS Code、Sublime Text 和 Helix 等编辑器提供多种语言服务。
可用的语法检查规则列表请见这里。
兼容浏览器的版本,可用于代码高亮或是搭配 CodeMirror 和 Monaco 等编辑器作为语言服务器协议(LSP)插件(使用实例展示)。自 1.45 版本起已集成到 MediaWiki 官方 CodeMirror 扩展中。
一个轻量级版本,仅支持模板的解析和操作。这个版本适用于仅需要处理模板的使用场景,例如某些专注于模板操作的的机器人或网络工具(例如 GANReviewTool)。
请根据需要需要安装对应的版本(WikiParser-Node 或 WikiLint),如:
npm i wikiparser-node或
npm i wikilint你可以安装以下任意可选库来启用高级功能:
| 库 | 功能 |
|---|---|
mathoid-texvcjs |
诊断和渲染 <math> 和 <chem> 扩展标签 |
stylelint |
诊断 style 属性 |
vscode-css-languageservice |
style 属性的 CSS 语言服务 |
vscode-html-languageservice |
HTML 标签的语言服务 |
vscode-json-languageservice |
<templatedata>、<mapframe> 和 <maplink> 标签的 JSON 语言服务 |
katex |
渲染 <math> 和 <chem> 扩展标签 |
mediawiki-expr |
计算解析器函数 #expr 和 #ifexpr
|
prismjs + prism-wiki
|
渲染 <syntaxhighlight> 扩展标签时的语法高亮 |
# 完整的语言服务特性(用于 `Parser.createLanguageService()`)
npm i mathoid-texvcjs stylelint vscode-css-languageservice vscode-html-languageservice vscode-json-languageservice
# 完整的 HTML 渲染特性(用于 `Parser.toHtml()`)
npm i katex mathoid-texvcjs mediawiki-expr 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>更多浏览器端可用的插件请查阅对应文档。
一份完整的语法检查规则列表请见这里。
WikiParser-Node 已使用包含约 3,000 个测试用例的官方 MediaWiki PHP 解析器测试集进行了广泛的测试,这些测试用例涵盖了维基文本的各种边缘情况和特殊情况。测试结果可在这里查看。
对维基文本批量执行语法检查的命令行工具
轻量级的维基模板解析器
维基文本语言服务器协议实现
用于维基文本的 VS Code 扩展
A command-line tool that performs linting on Wikitext in bulk
A lightweight Wikitext template parser
An implementation of the Language Server Protocol for Wikitext
VS Code extension for Wikitext