Parser internal - bhsd-harry/wikiparser-node GitHub Wiki

This is an internal document. For visitors, you can now go back to the home page.

// viewOnly (main)
var {Shadow} = require('../util/debug');
var {rev} = Shadow;
assert.strictEqual(Parser.viewOnly, false);
Parser.viewOnly = false;
assert.strictEqual(Shadow.rev, rev);
Parser.viewOnly = true;
assert.strictEqual(Shadow.rev, rev);
Parser.viewOnly = true;
assert.strictEqual(Shadow.rev, rev);
Parser.viewOnly = false;
assert.strictEqual(Shadow.rev, rev + 1);
// lintCSS (Node.js)
var wikitext = '<br style=x>';
Parser.lintCSS = false;
assert.deepStrictEqual(Parser.parse(wikitext).lint(), []);
Parser.lintCSS = true;
assert.deepStrictEqual(
	Parser.parse(wikitext).lint(),
	[
		{
			rule: 'invalid-css',
			message: 'semi-colon expected',
			severity: 'error',
			startIndex: 11,
			endIndex: 11,
			startLine: 0,
			endLine: 0,
			startCol: 11,
			endCol: 11,
			code: 'css-semicolonexpected',
		},
		{
			rule: 'invalid-css',
			message: 'colon expected',
			severity: 'error',
			startIndex: 11,
			endIndex: 11,
			startLine: 0,
			endLine: 0,
			startCol: 11,
			endCol: 11,
			code: 'css-colonexpected',
		},
	],
);
// getConfig (Node.js)
var config = {
	doubleUnderscore: [
		[],
		[],
		{toc: 'toc'},
		{INDEX: 'INDEX'},
	],
	ext: ['translate'],
	parserFunction: [{}, {}],
	variable: [],
};
Parser.config = 'default';
assert.deepStrictEqual(
	Parser.getConfig(config),
	{
		doubleUnderscore: [
			['toc'],
			['INDEX'],
			{toc: 'toc'},
			{INDEX: 'INDEX'},
		],
		ext: ['translate'],
		variable: ['translationlanguage'],
		parserFunction: [
			{},
			{
				TRANSLATIONLANGUAGE: 'translationlanguage',
			},
		],
		excludes: [],
	},
);
assert.strictEqual(Parser.config, 'default');
// conversionTable (main)
var config = {
	ext: [],
	doubleUnderscore: [],
	conversionTable: [['a', 'b']],
};
Parser.getConfig(config);
assert.deepStrictEqual(Parser.conversionTable, new Map([['a', 'b']]));
// redirects (main)
var config = {
	ext: [],
	doubleUnderscore: [],
	redirects: [['a', 'b']],
};
Parser.getConfig(config);
assert.deepStrictEqual([...Parser.redirects], [['A', 'B']]);
// msg
assert.strictEqual(Parser.msg('$1', 'a'), 'a');
// normalizeTitle
var title = Parser.normalizeTitle(
	`<noinclude>a</noinclude><includeonly>b</includeonly>#{{{c||c}}}<!--d-->[[e]]`,
);
assert.strictEqual(title.title, 'A');
assert.strictEqual(title.fragment, '{{{c|}}}[[e]]');
assert.strictEqual(
	Parser.normalizeTitle('%25', 0, false, undefined, {decode: true}).title,
	'%',
);
title = Parser.normalizeTitle('&#x25;25', 0, false, undefined, {decode: true});
assert.ok(!title.valid);
assert.strictEqual(title.title, '%25');
title = Parser.normalizeTitle('%26amp;', 0, false, undefined, {decode: true});
assert.ok(title.valid);
assert.strictEqual(title.title, '&');
// normalizeTitle (main)
var title;
Parser.redirects.set('A', 'B b#<');
title = Parser.normalizeTitle('a');
assert.strictEqual(title.toString(), 'B_b#<');
assert.strictEqual(title.toString(true), 'B b#<');
// partialParse
(async () => {
	var wikitext = 'a',
		token = Parser.partialParse(wikitext, () => wikitext);
	wikitext = '';
	assert.strictEqual((await token).getAttribute('stage'), 1);
})();
// require (main)
var {Token} = require('../src/index');
Parser.parse('');
assert.strictEqual(Parser.require('Token'), Token);
assert.strictEqual(Parser.require('./src/index').Token, Token);
⚠️ **GitHub.com Fallback** ⚠️