ParameterToken (EN) - bhsd-harry/wikiparser-node GitHub Wiki
Table of Contents
Parameters of a template or magic word. This class inherits all the properties and methods of the Token class which are not repeated here.
✅ Available in the Mini and Browser versions.
🌐 Available in the Browser version.
✅ Expand
type: string
Name of the parameter, read-only.
// name
var [anonymous, named] = Parser.parse("{{a|b|c=}}")
.querySelectorAll("parameter");
assert.equal(anonymous, "b");
assert.equal(named, "c=");
assert.strictEqual(anonymous.name, "1");
assert.strictEqual(named.name, "c");// name (main)
var named = Parser.parse("{{a|b=1}}").querySelector("parameter");
named.firstChild.replaceChildren("c");
assert.strictEqual(named.name, "c");✅ Expand
type: boolean
Whether the parameter is anonymous. Read-only in the Mini and Browser versions.
// anon
var [anonymous, named] = Parser.parse("{{a|b|c=}}")
.querySelectorAll("parameter");
assert.equal(anonymous, "b");
assert.equal(named, "c=");
assert.ok(anonymous.anon);
assert.ok(!named.anon);// anon (main)
var [anonymous] = Parser.parse("{{a|b}}").querySelectorAll("parameter");
anonymous.anon = false;
assert.equal(anonymous, "1=b");🌐 Expand
type: boolean
Whether the parameter is duplicated. Read-only in the Browser version.
// duplicated (print)
var root = Parser.parse("{{a|b|1=}}"),
[anonymous, named] = root.querySelectorAll("parameter");
assert.equal(anonymous, "b");
assert.equal(named, "1=");
assert.ok(anonymous.duplicated);
assert.ok(named.duplicated);// duplicated (main)
var root = Parser.parse("{{a|b|1=}}"),
[anonymous] = root.querySelectorAll("parameter");
assert.equal(anonymous, "b");
anonymous.duplicated = false;
assert.equal(root, "{{a|b}}");✅ Expand
returns: LintError[]
Report potential grammar errors.
// lint
var parameter = Parser.parse("{{a|http://a.com/index.php?a=1}}")
.querySelector("parameter");
assert.equal(parameter, "http://a.com/index.php?a=1");
assert.deepStrictEqual(parameter.lint(), [
{
rule: "unescaped",
severity: "error",
message: "unescaped query string in an anonymous parameter",
startLine: 0,
startCol: 28,
startIndex: 28,
endLine: 0,
endCol: 29,
endIndex: 29,
fix: {
range: [28, 29],
text: "{{=}}",
desc: "escape",
},
},
]);🌐 Expand
Save the syntax tree as JSON.
// json (print)
var parameter = Parser.parse("{{a|1=|}}").querySelector("parameter");
assert.equal(parameter, "1=");
assert.deepStrictEqual(parameter.json(), {
range: [4, 6],
type: "parameter",
name: "1",
anon: false,
duplicated: true,
childNodes: [
{
range: [4, 5],
type: "parameter-key",
childNodes: [
{
range: [4, 5],
data: "1",
},
],
},
{
range: [6, 6],
type: "parameter-value",
childNodes: [
{
range: [6, 6],
data: "",
},
],
},
],
});Expand
returns: this
Deep clone the node.
// cloneNode (main)
var [anonymous, named] = Parser.parse("{{a|b|c=}}")
.querySelectorAll("parameter");
assert.equal(anonymous, "b");
assert.equal(named, "c=");
assert.deepStrictEqual(anonymous.cloneNode(), anonymous);
assert.deepStrictEqual(named.cloneNode(), named);Expand
returns: string
Get the value of the parameter.
// getValue (main)
var [anonymous, named] = Parser.parse("{{a| b | c = 1 }}")
.querySelectorAll("parameter");
assert.equal(anonymous, " b ");
assert.equal(named, " c = 1 ");
assert.strictEqual(anonymous.getValue(), " b "); // 模板的匿名参数保留首尾的空白字符
assert.strictEqual(named.getValue(), "1"); // 模板的命名参数不保留首尾的空白字符Expand
param: string new value
Set the value of the parameter.
// setValue (main)
var parameter = Parser.parse("{{a|b=1}}").querySelector("parameter");
assert.equal(parameter, "b=1");
parameter.setValue(" 2 ");
assert.equal(parameter, "b= 2 "); // setValue方法总是保留空白字符,哪怕是无效的Expand
param: string new name
Rename the parameter.
// rename (main)
var parameter = Parser.parse("{{a|b=1}}").querySelector("parameter");
assert.equal(parameter, "b=1");
parameter.rename("c");
assert.equal(parameter, "c=1");Expand
version added: 1.1.4
Escape = in the value of the parameter.
// escape (main)
var parameter = Parser.parse("{{a|1=b=c}}").querySelector("parameter");
assert.equal(parameter, "1=b=c");
parameter.escape();
assert.equal(parameter, "1=b{{=}}c");