wikiparse - bhsd-harry/wikiparser-node GitHub Wiki

目录

Other Languages

简介

这是浏览器端的插件添加的全局变量,可以执行高亮静态代码或文本框、报告潜在的语法错误等多种操作。

Properties

version

展开

type: string
WikiParser-Node 的版本号。

codejar

展开

需要加载 CodeJar 插件。

type: Promise<(textbox: HTMLTextAreaElement, include?: boolean, linenums?: boolean) => CodeJar>
高亮文本框。

(await wikiparse.codejar)(document.getElementsByTagName('textarea')[0]);

Methods

setI18N

展开

param: Record<string, string> 语言信息
设置语言。默认语言为英文,其他预设的语言包含简体中文和繁体中文。

(async () => {
	const wikitext = "{{";
	assert.strictEqual(
		(await wikiparse.lint(wikitext))[0].message,
		'lonely "{"',
	);
	const i18n = await (await fetch(
		"https://cdn.jsdelivr.net/npm/wikiparser-node/i18n/zh-hans.json",
	)).json();
	wikiparse.setI18N(i18n);
	assert.strictEqual(
		(await wikiparse.lint(wikitext))[0].message,
		'孤立的"{"',
	);
})();

setLintConfig

展开

param: LintConfig | undefined
添加 Linter 设置。

// setLintConfig (browser)
(async () => {
	const wikitext = "{{";
	assert.strictEqual(
		(await wikiparse.lint(wikitext))[0].message,
		'lonely "{"',
	);
	wikiparse.setLintConfig({"lonely-bracket": 0});
	assert.strictEqual(
		(await wikiparse.lint(wikitext)).length,
		0,
	);
})();

setConfig

展开

param: Config
添加解析设置。预设的解析设置包含英文维基百科(enwiki)、中文维基百科(zhwiki)、日文维基百科(jawiki)、萌娘百科(moegirl)和 LLWiki(llwiki)。如需定制一个 MediaWiki 站点的解析设置,请参考 .schema.json 填入相关内容。

const config = await (await fetch(
	'https://cdn.jsdelivr.net/npm/wikiparser-node/config/zhwiki.json',
)).json();
wikiparse.setConfig(config);

getConfig

展开

returns: Promise<Config>
获取解析设置。

const config = await wikiparse.getConfig();

lint

展开

param: string 维基文本
param: boolean 是否嵌入,默认为 false
returns: Promise<LintError[]>
报告潜在语法错误。

// lint (browser)
(async () => {
	assert.deepStrictEqual(
		await wikiparse.lint("[[a]"),
		[
			{
				rule: "lonely-bracket",
				message: 'lonely "["',
				severity: "warning",
				startIndex: 0,
				startLine: 0,
				startCol: 0,
				endIndex: 2,
				endLine: 0,
				endCol: 2,
			},
		],
	);
})();

json

展开

param: string 维基文本
param: boolean 是否嵌入,默认为 false
returns: Promise<AST>
生成 JSON 格式的 AST。

// json (browser)
(async () => {
	assert.deepStrictEqual(
		await wikiparse.json("[[a]]"),
		{
			range: [0, 5],
			type: "root",
			childNodes: [
				{
					range: [0, 5],
					type: "link",
					name: "A",
					childNodes: [
						{
							range: [2, 3],
							type: "link-target",
							childNodes: [
								{
									range: [2, 3],
									data: "a",
								},
							],
						},
					],
				},
			],
		},
	);
})();

lineNumbers

展开

param: HTMLElement 静态代码所在的网页元素
param: number 行号起始值,可选
param: number 上方内边距,可选
returns: Promise<void>
给代码块添加行号。

wikiparse.lineNumbers(document.getElementsByTagName('pre')[0]);

highlight

展开

需要加载 Highlight 插件。

param: HTMLElement 静态代码所在的网页元素
param: boolean 是否嵌入,默认为 false
param: boolean 是否加注行号,默认为 false
param: number 行号起始值,可选
returns: Promise<void>
高亮静态代码。

wikiparse.highlight(document.getElementsByTagName('pre')[0], false, true);

edit

展开

(已弃用)需要加载 Editor 插件。

param: HTMLTextAreaElement 文本框
param: boolean 是否嵌入,默认为 false
高亮文本框。

wikiparse.edit(document.getElementsByTagName('textarea')[0]);

parse

Expand

需要加载 Parse 插件。

param: string 维基文本
param: boolean 是否嵌入,默认为 false
returns: Promise<ExtendedAST>
生成可遍历的 AST。

// parse (browser)
(async () => {
	const root = await wikiparse.parse("[[a]]{{b}}"),
		{firstChild, lastChild, childNodes, length} = root;
	assert.strictEqual(firstChild.parentNode, root);
	assert.strictEqual(lastChild.parentNode, root);
	assert.strictEqual(firstChild.nextSibling, lastChild);
	assert.strictEqual(lastChild.previousSibling, firstChild);
	assert.deepStrictEqual(childNodes, [firstChild, lastChild]);
	assert.strictEqual(length, 2);
	assert.strictEqual(firstChild.getRootNode(), root);
	assert.ok(root.is("root"));
	assert.ok(firstChild.is("link"));
	assert.ok(lastChild.is("template"));
	assert.strictEqual(firstChild.closest("root"), root);
	assert.strictEqual(root.querySelector("link"), firstChild);
	assert.deepStrictEqual(root.querySelectorAll("template"), [lastChild]);
})();

Constructors

Linter

参见 Linter。

LanguageService

参见 LanguageService。

⚠️ **GitHub.com Fallback** ⚠️