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.ok(!Parser.viewOnly);
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);// 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, "&");
title = Parser.normalizeTitle("{{{{foo|bar}}|baz}}");
assert.strictEqual(title.title, "{{{{foo|bar}}|baz}}");// 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#<");// require (main)
var {Token} = require("../src/index");
Parser.parse("");
assert.strictEqual(Parser.require("Token"), Token);
assert.strictEqual(Parser.require("./src/index").Token, Token);