Title - bhsd-harry/wikiparser-node GitHub Wiki

目录

Other Languages

简介

Title 对象由 Parser.normalizeTitle 方法生成,代表一个页面的标题。

✅ 在 MiniBrowser 版本中可用。

Properties

extension

✅ 展开

加入的版本:1.1.0

type: string | undefined
小写的扩展名。

// extension
assert.strictEqual(Parser.normalizeTitle('A.CSS').extension, 'css');
// extension (main)
var title = Parser.normalizeTitle('A.CSS');
title.extension = 'JS';
assert.equal(title, 'A.JS');
title.extension = undefined;
assert.equal(title, 'A');
title.extension = 'json';
assert.equal(title, 'A.json');

fragment

✅ 展开

type: string | undefined
URI 片段

// fragment
assert.strictEqual(Parser.normalizeTitle('Wikitext').fragment, undefined);
assert.strictEqual(Parser.normalizeTitle('#  %3C ').fragment, '_<');
// fragment (main)
var title;
title = Parser.normalizeTitle('a#%3C');
title.fragment = 'a%20 b&nbsp;';
assert.equal(title, 'A#a_b');
title.fragment = undefined;
assert.equal(title, 'A');

interwiki

展开

type: string
跨维基前缀。注意不含:,且使用默认的解析设置时不会包含任何跨维基的信息。

// interwiki (main)
var title;
assert.strictEqual(Parser.normalizeTitle('mw:Main Page', 0).interwiki, '');
Parser.getConfig();
Parser.config.interwiki = ['mw', 'metawiki'];
title = Parser.normalizeTitle('mw:Main Page');
assert.strictEqual(title.interwiki, 'mw');
title.interwiki = 'metawiki';
assert.equal(title, 'metawiki:Main_Page');

main

✅ 展开

type: string
不含命名空间的标题主体部分。注意首字母将大写且下划线被替换为空格。

// main
var title = Parser.normalizeTitle('template:birth_ date:mm');
assert.strictEqual(title.main, 'Birth date:mm');
title.main = 'birth_month';
assert.strictEqual(title.main, 'Birth month');

ns

✅ 展开

type: number
命名空间编号。

// ns
assert.strictEqual(Parser.normalizeTitle(':File:a', 10).ns, 6);
assert.strictEqual(Parser.normalizeTitle('File:a', 10).ns, 6);
assert.strictEqual(Parser.normalizeTitle('A', 10).ns, 10);
assert.strictEqual(Parser.normalizeTitle('../a', 10).ns, 0);
// ns (main)
var title;
Parser.getConfig();
Parser.config.interwiki = ['mw'];
title = Parser.normalizeTitle('mw:File:a');
assert.strictEqual(title.ns, 6);
title.ns = 0;
assert.equal(title, 'mw:A');

prefix

✅ 展开

type: string
命名空间标准前缀,只读。

// prefix
assert.strictEqual(Parser.normalizeTitle('A').prefix, '');
assert.strictEqual(Parser.normalizeTitle('Wikipedia:A').prefix, 'Project:');
// prefix (main)
Parser.getConfig();
Parser.config.interwiki = ['mw'];
assert.strictEqual(Parser.normalizeTitle('mw:user:a').prefix, 'User:');

title

✅ 展开

type: string
规范的完整标题,只读。注意首字母将大写且空格被替换为下划线。

// title
assert.strictEqual(
	Parser.normalizeTitle('user talk:a b').title,
	'User_talk:A_b',
);
// title (main)
Parser.conversionTable.set('漢', '汉');
assert.strictEqual(Parser.normalizeTitle('漢').title, '汉');
Parser.redirects.set('汉', 'Chinese#Chinese');
assert.strictEqual(Parser.normalizeTitle('漢').title, 'Chinese');
Parser.config.interwiki = ['mw'];
assert.strictEqual(Parser.normalizeTitle('mw:a').title, 'mw:A');

valid

✅ 展开

type: boolean
标题是否符合 MediaWiki 规则

// valid
assert.ok(!Parser.normalizeTitle('').valid);
assert.ok(!Parser.normalizeTitle('#a').valid);
assert.ok(!Parser.normalizeTitle('<').valid);
assert.ok(!Parser.normalizeTitle('&#60;').valid);
assert.ok(!Parser.normalizeTitle('%3c').valid);
assert.ok(Parser.normalizeTitle('a#a<').valid);
assert.ok(!Parser.normalizeTitle('&amp;nbsp;').valid);
assert.ok(!Parser.normalizeTitle('&#x25;25').valid);
assert.ok(!Parser.normalizeTitle('::a').valid);
assert.ok(Parser.normalizeTitle(':a').valid);
assert.ok(!Parser.normalizeTitle('./a').valid);
assert.ok(!Parser.normalizeTitle('a/..').valid);
assert.ok(Parser.normalizeTitle('../a').valid);
assert.ok(!Parser.normalizeTitle('<nowiki/>a').valid);
assert.ok(Parser.normalizeTitle('{{a}}').valid);
assert.ok(!Parser.normalizeTitle('{{!}}').valid);

Methods

autoConvert

展开

执行单向转换。这会修改 main 属性。

// autoConvert (main)
var title;
Parser.conversionTable.set('頁', '页');
Parser.conversionTable.set('首頁', 'Main page');
title = Parser.normalizeTitle('首頁');
title.autoConvert();
assert.strictEqual(title.main, 'Main page');

getRedirection

展开

加入的版本:1.12.2

returns: [boolean, string]
检测标题是否是一个重定向,并获取目标标题。

// getRedirection (main)
var title;
Parser.redirects.set('File:A', 'File:B');
title = Parser.normalizeTitle('media:a');
assert.deepStrictEqual(title.getRedirection(), [true, 'Media:B']);
Parser.conversionTable.set('漢', '汉');
Parser.redirects.set('汉', 'Chinese#Chinese');
title = Parser.normalizeTitle('漢');
assert.deepStrictEqual(title.getRedirection(), [true, 'Chinese']);
title = Parser.normalizeTitle('c');
assert.deepStrictEqual(title.getRedirection(), [false, 'C']);

getUrl

✅ 展开

加入的版本:1.10.0

returns: string
获取标题的 URL。

// getUrl
var title = Parser.normalizeTitle('?/a#b');
assert.strictEqual(title.getUrl(), '/wiki/%3F%2Fa#b');
Parser.config.articlePath = '/wiki';
title = Parser.normalizeTitle('?/a#b');
assert.strictEqual(title.getUrl(), '/wiki/%3F%2Fa#b');
title = Parser.normalizeTitle('#<');
assert.strictEqual(title.getUrl(), '#%3C');
title = Parser.normalizeTitle('');
assert.strictEqual(title.getUrl(), '');
// getUrl (main)
var title;
Parser.redirects.set('C', 'D#C');
title = Parser.normalizeTitle('C');
assert.strictEqual(title.getUrl(), '/wiki/D#C');

isTalkPage

展开

加入的版本:1.1.0

是否是讨论页面。

// isTalkPage (main)
var title = Parser.normalizeTitle('file talk:a.jpg');
assert.ok(title.isTalkPage());
title = Parser.normalizeTitle('file:a.jpg');
assert.ok(!title.isTalkPage());

toBasePage

展开

加入的版本:1.1.0

切换为上一级页面。

// toBasePage (main)
var title = Parser.normalizeTitle('A/AA/AAA');
title.toBasePage();
assert.equal(title, 'A/AA');
title.toBasePage();
assert.equal(title, 'A');

toRootPage

展开

加入的版本:1.1.0

切换为根页面。

// toRootPage (main)
var title = Parser.normalizeTitle('A/AA/AAA');
title.toRootPage();
assert.equal(title, 'A');

toSubjectPage

展开

加入的版本:1.1.0

切换为主页面。

// toSubjectPage (main)
var title = Parser.normalizeTitle('file talk:a.jpg');
title.toSubjectPage();
assert.equal(title, 'File:A.jpg');

toTalkPage

展开

加入的版本:1.1.0

切换为讨论页面。

// toTalkPage (main)
var title = Parser.normalizeTitle('file:a.jpg');
title.toTalkPage();
assert.equal(title, 'File_talk:A.jpg');
⚠️ **GitHub.com Fallback** ⚠️