Skip to content

ParameterToken

bhsd edited this page Nov 29, 2023 · 28 revisions

Other Languages

简介

模板或魔术字的参数。

✅ 在 MiniBrowser 版本中可用。

Properties

name

✅ 展开

type: string
参数名,只读。

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

anon

✅ 展开

type: boolean
是否是匿名参数。

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

value

展开

type: string
参见 getValuesetValue 方法。

duplicated

展开

type: boolean
是否是重复参数。

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

Methods

lint

✅ 展开

returns LintError[]
报告潜在语法错误。

// 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',
    },
]);

cloneNode

展开

returns: this
深拷贝节点。

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

getValue

展开

returns: string
获取参数值。

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

setValue

展开

param: string 参数值
设置参数值。

// setValue
var parameter = Parser.parse('{{a|b=1}}').querySelector('parameter');
assert.equal(parameter, 'b=1');
parameter.setValue(' 2 ');
assert.equal(parameter, 'b= 2 '); // setValue方法总是保留空白字符,哪怕是无效的

rename

展开

param: string 新参数名
修改参数名。

// rename
var parameter = Parser.parse('{{a|b=1}}').querySelector('parameter');
assert.equal(parameter, 'b=1');
parameter.rename('c');
assert.equal(parameter, 'c=1');

Clone this wiki locally