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"],
);