debug - bhsd-harry/wikiparser-node GitHub Wiki

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

// Shadow.run (Node.js)
var {Shadow} = require("../util/debug"),
	{Token} = require("../src/index");
var token = Shadow.run(() => new Token());
assert.ok(token.getAttribute("built"));
assert.ok(!Shadow.running);
// isToken (Node.js)
var {isToken} = require("../util/debug"),
	{Token} = require("../src/index");
var isPlain = isToken("plain"),
	isRoot = isToken("root"),
	token = new Token();
assert.ok(isPlain(token));
assert.ok(!isRoot(token));
// isRowEnd (Node.js)
var {isRowEnd} = require("../util/debug");
var {childNodes} = Parser.parse("{|\n|\n|-\n|}").firstChild;
for (const child of childNodes) {
	assert.strictEqual(
		isRowEnd(child),
		child.type !== "table-attrs" && child.type !== "td",
	);
}
// isLink (Node.js)
var {isLink} = require("../util/debug");
assert.ok(isLink("redirect-target"));
assert.ok(isLink("link"));
assert.ok(!isLink("category"));
assert.ok(!isLink("file"));
// setChildNodes (Node.js)
var {setChildNodes} = require("../util/debug"),
	{Token} = require("../src/index"),
	{AstText} = require("../lib/text");
var a = new AstText("a"),
	b = new AstText("b"),
	c = new AstText("c"),
	d = new AstText("d"),
	e = new AstText("e"),
	token = new Token(),
	removed;
token.append(a, b, c);
assert.equal(token, "abc");
removed = setChildNodes(token, 1, 1, [d, e]);
assert.equal(token, "adec");
assert.deepStrictEqual(removed, [b]);
assert.deepStrictEqual(token.childNodes, [a, d, e, c]);
assert.strictEqual(a.parentNode, token);
assert.strictEqual(c.parentNode, token);
assert.strictEqual(d.parentNode, token);
assert.strictEqual(e.parentNode, token);
assert.strictEqual(a.previousSibling, undefined);
assert.strictEqual(c.previousSibling, e);
assert.strictEqual(d.previousSibling, a);
assert.strictEqual(e.previousSibling, d);
assert.strictEqual(a.nextSibling, d);
assert.strictEqual(c.nextSibling, undefined);
assert.strictEqual(d.nextSibling, e);
assert.strictEqual(e.nextSibling, c);

removed = setChildNodes(token, 0, 4, [b]);
assert.equal(token, "b");
assert.deepStrictEqual(removed, [a, d, e, c]);
assert.deepStrictEqual(token.childNodes, [b]);
assert.strictEqual(b.parentNode, token);
assert.strictEqual(b.previousSibling, undefined);
assert.strictEqual(b.nextSibling, undefined);
// setChildNodes (main)
var {setChildNodes} = require("../util/debug"),
	{Token} = require("../src/index"),
	{AstText} = require("../lib/text");
var a = new AstText("a"),
	b = new AstText("b"),
	c = new AstText("c"),
	token = new Token();
token.append(a, b, c);
setChildNodes(token, 1, 1);
assert.strictEqual(b.parentNode, undefined);
assert.strictEqual(b.previousSibling, undefined);
assert.strictEqual(b.nextSibling, undefined);

setChildNodes(token, 0, 2);
assert.strictEqual(a.parentNode, undefined);
assert.strictEqual(c.parentNode, undefined);
assert.strictEqual(a.previousSibling, undefined);
assert.strictEqual(c.previousSibling, undefined);
assert.strictEqual(a.nextSibling, undefined);
assert.strictEqual(c.nextSibling, undefined);
// getMagicWordInfo (Node.js)
var {getMagicWordInfo} = require("../util/debug");
var parserFunction = [
	{"#if": "if"},
	{PAGENAME: "pagename"},
];
assert.deepStrictEqual(
	getMagicWordInfo("PAGENAME", parserFunction),
	["pagename", true, "pagename"],
);
assert.deepStrictEqual(
	getMagicWordInfo("IF", parserFunction),
	["if", false, false],
);
assert.deepStrictEqual(
	getMagicWordInfo("#IF", parserFunction),
	["#if", false, "if"],
);
// emptyArray (Node.js)
var {emptyArray} = require("../util/debug");
assert.deepStrictEqual(
	emptyArray(3, i => i + 1),
	[1, 2, 3],
);
// mixin (Node.js)
var {attributesParent} = require("../mixin/attributesParent"),
	{elementLike} = require("../mixin/elementLike"),
	{gapped} = require("../mixin/gapped"),
	{hiddenToken} = require("../mixin/hidden"),
	{nodeLike} = require("../mixin/nodeLike"),
	{padded} = require("../mixin/padded"),
	{Token} = require("../src/index");
assert.strictEqual(attributesParent()(Token).name, "Token");
assert.strictEqual(elementLike(Token).name, "Token");
assert.strictEqual(gapped()(Token).name, "Token");
assert.strictEqual(hiddenToken()(Token).name, "Token");
assert.strictEqual(nodeLike(Token).name, "Token");
assert.strictEqual(padded("")(Token).name, "Token");
// mixin (main)
var {fixedToken} = require("../mixin/fixed"),
	{noEscape} = require("../mixin/noEscape"),
	{singleLine} = require("../mixin/singleLine"),
	{sol} = require("../mixin/sol"),
	{syntax} = require("../mixin/syntax"),
	{Token} = require("../src/index");
assert.strictEqual(fixedToken(Token).name, "Token");
assert.strictEqual(noEscape(Token).name, "Token");
assert.strictEqual(singleLine(Token).name, "Token");
assert.strictEqual(sol()(Token).name, "Token");
assert.strictEqual(syntax()(Token).name, "Token");
// undo (main)
var {firstChild: {firstChild}} = Parser.parse("[[file:a]]"),
	token, cloned;
assert.equal(firstChild.type, "link-target");
try {
	firstChild.setText("a");
} catch {}
assert.equal(firstChild, "file:a");

({firstChild: {firstChild}} = Parser.parse("[[category:a]]"));
assert.equal(firstChild.type, "link-target");
try {
	firstChild.setText("a");
} catch {}
assert.equal(firstChild, "category:a");

token = Parser.parse("{{{!}}").firstChild;
({firstChild} = token);
assert.equal(firstChild.type, "table-syntax");
try {
	firstChild.length = 1;
} catch {}
assert.equal(firstChild, "{{{!}}");
firstChild.replaceChildren("{|");
assert.equal(firstChild, "{|");

token = Parser.parse("<gallery>a</gallery>").querySelector("link-target");
try {
	token.append("<");
} catch {}
assert.equal(token, "a");

token = Parser.parse("-{zh-cn:a}-")
	.querySelector("converter-rule");
({firstChild} = token);
assert.equal(firstChild.type, "converter-rule-variant");
cloned = firstChild.cloneNode();
cloned.setText("!");
try {
	firstChild.safeReplaceWith(cloned);
} catch {}
assert.equal(token, "zh-cn:a");
// getCanonicalName (main)
var {getCanonicalName} = require("../util/debug");
var parserFunction = [
	{"#if": "if"},
	{PAGENAME: "pagename"},
];
assert.deepStrictEqual(
	getCanonicalName("PAGENAME", parserFunction),
	["pagename", "pagename"],
);
assert.deepStrictEqual(
	getCanonicalName("IF", parserFunction),
	["if", false],
);
assert.deepStrictEqual(
	getCanonicalName("#IF", parserFunction),
	["if", "if"],
);
⚠️ **GitHub.com Fallback** ⚠️