-
Notifications
You must be signed in to change notification settings - Fork 2
ParameterToken (EN)
bhsd edited this page Dec 11, 2023
·
17 revisions
Parameters of a template or magic word.
✅ Available in the Mini and Browser versions.
✅ 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');
✅ 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);
anonymous.anon = false;
assert.equal(anonymous, '1=b');
Expand
type: boolean
Whether the parameter is duplicated.
// duplicated
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}}');
✅ 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(), [
{
severity: 'error',
message: 'unescaped query string in an anonymous parameter',
startLine: 0,
startCol: 28,
startIndex: 28,
endLine: 0,
endCol: 29,
endIndex: 29,
excerpt: 'http://a.com/index.php?a=1',
},
]);
Expand
returns: this
Deep clone the node.
// cloneNode
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
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
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
var parameter = Parser.parse('{{a|b=1}}').querySelector('parameter');
assert.equal(parameter, 'b=1');
parameter.rename('c');
assert.equal(parameter, 'c=1');
对维基文本批量执行语法检查的命令行工具
用于维基文本的 ESLint 插件
A command-line tool that performs linting on Wikitext in bulk
ESLint plugin for Wikitext