Examples (external link) - bhsd-harry/wikiparser-node GitHub Wiki

Other Languages

用安全 URL 替换非安全 URL

展开

你可以将页面中已知域名的 http:// 链接替换为 https:// 链接。此示例演示了 MagicLinkToken 的用法。

// Replacing non-secure URLs with secure ones (main)
// 包含非安全 URL 的页面内容
import type {MagicLinkToken} from "wikiparser-node";
const content = `http://www.mediawiki.org/wiki/Foo

[http://www.mediawiki.org/wiki/Bar Baz]`,
	root = Parser.parse(content),
	links = root.querySelectorAll<MagicLinkToken>(
		"free-ext-link, ext-link-url",
	);
for (const link of links) {
	try {
		// 如果 URL 无效可能会抛出错误
		const url = link.getUrl() as URL;
		if (url.host === "www.mediawiki.org" && url.protocol === "http:") {
			link.protocol = "https://";
		}
	} catch {}
}
assert.equal(
	root,
	`https://www.mediawiki.org/wiki/Foo

[https://www.mediawiki.org/wiki/Bar Baz]`,
);

用引用模板替换裸链接

展开

你可以将页面中的裸链接替换为引用模板。此示例演示了 MagicLinkTokenExtLinkToken 的用法。

// Replacing bare URLs with citation templates (main)
// 包含裸链接的页面内容
import type {ExtLinkToken, MagicLinkToken} from "wikiparser-node";
const content = `<ref>https://www.mediawiki.org/wiki/Foo</ref>

<ref>[https://www.mediawiki.org/wiki/Bar Baz]</ref>`,
	root = Parser.parse(content),
	links = root.querySelectorAll<ExtLinkToken | MagicLinkToken>(
		"ext-inner#ref > ext-link, ext-inner#ref > free-ext-link",
	);
for (const link of links) {
	if (link.is<ExtLinkToken>("ext-link") && link.length === 2) {
		link.replaceWith(`{{Cite web|url=${link.link}|title=${link.innerText}}}`);
	} else {
		link.replaceWith(`{{Cite web|url=${link.link}}}`);
	}
}
assert.equal(
	root,
	`<ref>{{Cite web|url=https://www.mediawiki.org/wiki/Foo}}</ref>

<ref>{{Cite web|url=https://www.mediawiki.org/wiki/Bar|title=Baz}}</ref>`,
);

用模板替换 ISBN 魔术链接

展开

你可以将已弃用的 ISBN 魔术链接替换为模板。此示例演示了 MagicLinkToken 的用法。

// Replacing ISBN magic links with templates (main)
// 包含 ISBN 魔术链接的页面内容
import type {MagicLinkToken} from "wikiparser-node";
const content = "ISBN 1234567890",
	root = Parser.parse(content),
	isbns = root.querySelectorAll<MagicLinkToken>("magic-link[protocol=ISBN]");
for (const isbn of isbns) {
	isbn.replaceWith(`{{ISBN|${isbn.link.slice(5)}}}`);
}
assert.equal(
	root,
	"{{ISBN|1234567890}}",
);
⚠️ **GitHub.com Fallback** ⚠️