-
Notifications
You must be signed in to change notification settings - Fork 2
Home
bhsd edited this page Jan 13, 2023
·
29 revisions
wikiparser-node 是一款由 Bhsd 开发的基于 Node.js 环境的离线维基文本语法解析器,可以解析绝大部分的维基语法并生成语法树,还可以很方便地对语法树进行查询和修改,最后返回修改后的维基文本。语法树的每个节点对应一个仿照 HTMLElement 类设计的类 Token。本 Wiki 将依次介绍不同维基语法对应的各类 Token 可用的属性和方法。
首先介绍解析工具的入口。通常情况下,所有操作的第一步都是通过 Parser.parse 方法生成一个完整的语法树,然后再对语法树进行查询和修改,最后输出维基文本。
var Parser = require('wikiparser-node');
- 指定解析设置 JSON 文件的相对或绝对路径。
assert.strictEqual(Parser.config, './config/default'); // 这是默认设置的相对路径
parse(wikitext: string, include?: boolean = false): Token
- 解析维基文本。
var wikitext = '<includeonly>include</includeonly><noinclude>noinclude</noinclude>',
include = Parser.parse(wikitext, true),
noinclude = Parser.parse(wikitext);
assert.strictEqual(include.text(), 'include'); // Token.text()方法只保留有效部分,详见[01. Token]页面
assert.strictEqual(noinclude.text(), 'noinclude');
isInterwiki(title: string): RegExpMatchArray
- 指定的标题是否是跨维基。
Parser.config = './config/llwiki'; // 跨维基前缀依赖每个MediaWiki站点具体的设定
assert(Boolean(Parser.isInterwiki('zhwiki:首页')));
normalizeTitle(title: string, defaultNs?: number = 0): Title
- 规范化页面标题。
var title = {
title: 'Template:Lj',
main: 'Lj',
prefix: 'Template:',
ns: 10,
interwiki: '',
fragment: '',
valid: true,
};
assert.deepStrictEqual(structuredClone(Parser.normalizeTitle('lj', 10)), title);
getTool(): typeof $
- 加载批量操作工具。
对维基文本批量执行语法检查的命令行工具
用于维基文本的 ESLint 插件
A command-line tool that performs linting on Wikitext in bulk
ESLint plugin for Wikitext