-
Notifications
You must be signed in to change notification settings - Fork 2
LinkBaseToken
bhsd edited this page Jul 23, 2024
·
6 revisions
目录
CategoryToken、FileToken、LinkToken 和 RedirectTargetToken 的父类。LinkBaseToken 继承了 Token 类的全部属性和方法,这里不再列出。
✅ 在 Mini 和 Browser 版本中可用。
🌐 在 Browser 版本中可用。
✅ 展开
type: string
规范化的目标页面名称,只读。
// name
var {firstChild} = Parser.parse('[[category:a b]]');
assert.strictEqual(firstChild.name, 'Category:A_b');
展开
type: Title
完整链接。
// link (main)
var {firstChild} = Parser.parse('[[a]]');
assert.equal(firstChild.link, 'A');
firstChild.link = 'file:b';
assert.equal(firstChild, '[[:file:b]]'); // 自动在开头添加':'
assert.strictEqual(firstChild.name, 'File:B');
({firstChild} = Parser.parse('[[category:c]]'));
firstChild.link = 'category:d';
assert.equal(firstChild, '[[category:d]]');
assert.strictEqual(firstChild.name, 'Category:D');
展开
type: string
// fragment (main)
var {firstChild} = Parser.parse('[[a#%7B%7D]]');
assert.strictEqual(firstChild.fragment, '{}');
firstChild.fragment = undefined;
assert.equal(firstChild, '[[A]]'); // 自动规范化页面名
firstChild.fragment = 'b';
assert.equal(firstChild, '[[A#b]]');
展开
type: string
跨维基前缀。
// interwiki (main)
var firstChild;
Parser.config = 'moegirl'; // 跨维基前缀依赖每个MediaWiki站点具体的设定
({firstChild} = Parser.parse('[[zhwp:a]]'));
assert.strictEqual(firstChild.interwiki, 'zhwp');
firstChild.interwiki = 'enwp';
assert.equal(firstChild, '[[enwp:A]]');
✅ 展开
returns: LintError[]
报告潜在语法错误。
// lint
var {firstChild} = Parser.parse('[[category:%61{{lj|a}}#b|c|]]');
assert.deepStrictEqual(firstChild.lint(), [
{
rule: 'unknown-page',
severity: 'warning',
message: 'template in an internal link target',
startLine: 0,
startCol: 2,
startIndex: 2,
endLine: 0,
endCol: 24,
endIndex: 24,
},
{
rule: 'url-encoding',
severity: 'error',
message: 'unnecessary URL encoding in an internal link',
startLine: 0,
startCol: 2,
startIndex: 2,
endLine: 0,
endCol: 24,
endIndex: 24,
},
{
rule: 'pipe-like',
severity: 'warning',
message: 'additional "|" in the link text',
startLine: 0,
startCol: 25,
startIndex: 25,
endLine: 0,
endCol: 27,
endIndex: 27,
suggestions: [
{
desc: 'escape',
range: [25, 27],
text: 'c|',
},
],
},
{
rule: 'no-ignored',
severity: 'error',
message: 'useless fragment',
startLine: 0,
startCol: 2,
startIndex: 2,
endLine: 0,
endCol: 24,
endIndex: 24,
fix: {
range: [22, 24],
text: '',
},
},
]);
🌐 展开
returns: string
以HTML格式输出。
// print
var {firstChild} = Parser.parse('[[a#b|b]]');
assert.equal(
firstChild.print(),
`<span class="wpb-link">[[<span class="wpb-link-target">a#b</span>|<span class="wpb-link-text">b</span>]]</span>`,
);
展开
param: string
设置链接目标。
// setTarget (main)
var {firstChild} = Parser.parse('[[a]]');
firstChild.setTarget('b');
assert.equal(firstChild, '[[b]]');
firstChild.setTarget('category:c');
assert.equal(firstChild, '[[:category:c]]'); // 自动在开头添加':'
展开
param: string
设置fragment。
// setFragment (main)
var {firstChild} = Parser.parse('[[a#a]]');
firstChild.setFragment();
assert.equal(firstChild, '[[A]]'); // 这个方法会同时规范化页面名
firstChild.setFragment('b');
assert.equal(firstChild, '[[A#b]]');
展开
param: string
设置链接显示文字。
// setLinkText (main)
var {firstChild} = Parser.parse('[[a|a]]');
firstChild.setLinkText();
assert.equal(firstChild, '[[a]]');
firstChild.setLinkText('{{b}}');
assert.equal(firstChild, '[[a|{{b}}]]');
assert(firstChild.querySelector('template#Template:B'));
firstChild.setLinkText('c');
assert.equal(firstChild, '[[a|c]]');
展开
加入的版本: 1.10.0
returns: string
转换为 HTML。
// toHtml (main)
var firstChild, lastChild;
Parser.config = 'enwiki';
({firstChild, lastChild} = Parser.parse([[mw:"?| c ]][[ #< ]]'));
assert.strictEqual(
firstChild.toHtml(),
'<a class="extiw" href="/wiki/mw%3A%22%3F" title="mw:"?"> c </a>',
);
assert.strictEqual(
lastChild.toHtml(),
'<a href="#%3C">#< </a>',
);
对维基文本批量执行语法检查的命令行工具
用于维基文本的 ESLint 插件
A command-line tool that performs linting on Wikitext in bulk
ESLint plugin for Wikitext