Skip to content
bhsd edited this page Jan 13, 2023 · 29 revisions

简介

wikiparser-node 是一款由 Bhsd 开发的基于 Node.js 环境的离线维基文本语法解析器,可以解析绝大部分的维基语法并生成语法树,还可以很方便地对语法树进行查询和修改,最后返回修改后的维基文本。语法树的每个节点对应一个仿照 HTMLElement 类设计的类 Token。本 Wiki 将依次介绍不同维基语法对应的各类 Token 可用的属性和方法。

Parser

首先介绍解析工具的入口。通常情况下,所有操作的第一步都是通过 Parser.parse 方法生成一个完整的语法树,然后再对语法树进行查询和修改,最后输出维基文本。

var Parser = require('wikiparser-node');

属性

config: string

  • 指定解析设置 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 $

Clone this wiki locally