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('%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);