ParameterToken (EN) - bhsd-harry/wikiparser-node GitHub Wiki

Table of Contents

Other Languages

Introduction

Parameters of a template or magic word.

✅ Available in the Mini and Browser versions.

Properties

name

✅ 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');

anon

✅ Expand

type: boolean
Whether the parameter is anonymous.

// anon
var [anonymous, named] = Parser.parse('{{a|b|c=}}')
	.querySelectorAll('parameter');
assert.equal(anonymous, 'b');
assert.equal(named, 'c=');
assert(anonymous.anon);
assert(!named.anon);
// anon (main)
var [anonymous] = Parser.parse('{{a|b}}').querySelectorAll('parameter');
anonymous.anon = false;
assert.equal(anonymous, '1=b');

value

Expand

type: string
See getValue and setValue methods.

duplicated

Expand

type: boolean
Whether the parameter is duplicated.

// duplicated (main)
var root = Parser.parse('{{a|b|1=}}'),
	[anonymous, named] = root.querySelectorAll('parameter');
assert.equal(anonymous, 'b');
assert.equal(named, '1=');
assert(anonymous.duplicated);
assert(named.duplicated);
anonymous.duplicated = false;
assert.equal(root, '{{a|b}}');

Methods

lint

✅ 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: '{{=}}',
		},
	},
]);

cloneNode

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);

getValue

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'); // 模板的命名参数不保留首尾的空白字符

setValue

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方法总是保留空白字符,哪怕是无效的

rename

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

escape

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');
⚠️ **GitHub.com Fallback** ⚠️