HeadingToken - bhsd-harry/wikiparser-node GitHub Wiki

Other Languages

简介

章节标题。这个类继承了 Token 类的全部属性和方法,这里不再列出。

✅ 在 MiniBrowser 版本中可用。
🌐 在 Browser 版本中可用。

Properties

level

✅ 展开

type: number
标题层级,只读。

// level
var {firstChild} = Parser.parse('==a==');
assert.equal(firstChild, '==a==');
assert.strictEqual(firstChild.level, 2);

innerText

展开

type: string
内部文本。

// innerText (main)
var {firstChild} = Parser.parse('==a==');
assert.equal(firstChild, '==a==');
assert.strictEqual(firstChild.innerText, 'a');
firstChild.innerText = 'b';
assert.equal(firstChild, '==b==');

id

展开

加入的版本:1.12.4

type: string
标题的id属性,只读。

// id (main)
var {firstChild} = Parser.parse('==a==');
assert.equal(firstChild, '==a==');
assert.strictEqual(firstChild.id, 'a');

Methods

lint

✅ 展开

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

// lint
var [h2, h1, h3] = Parser.parse(`<p
=a''==
>
= b =
===== c'' ===`).querySelectorAll('heading');
assert.equal(h2, "=a''==");
assert.equal(h1, '= b =');
assert.equal(h3, "===== c'' ===");
assert.deepStrictEqual(h2.lint(), [
	{
		rule: 'h1',
		severity: 'error',
		message: '<h1>',
		startLine: 1,
		startCol: 1,
		startIndex: 4,
		endLine: 1,
		endCol: 5,
		endIndex: 8,
	},
	{
		rule: 'unbalanced-header',
		severity: 'error',
		message: 'unbalanced "=" in a section header',
		startLine: 1,
		startCol: 1,
		startIndex: 4,
		endLine: 1,
		endCol: 5,
		endIndex: 8,
		suggestions: [
			{
				desc: 'h1',
				range: [7, 8],
				text: '',
			},
			{
				desc: 'h2',
				range: [4, 4],
				text: '=',
			},
		],
	},
	{
		rule: 'parsing-order',
		severity: 'error',
		message: 'section header in an HTML tag',
		startLine: 1,
		startCol: 0,
		startIndex: 3,
		endLine: 1,
		endCol: 6,
		endIndex: 9,
	},
	{
		rule: 'format-leakage',
		severity: 'error',
		message: 'unbalanced italic apostrophes in a section header',
		startLine: 1,
		startCol: 2,
		startIndex: 5,
		endLine: 1,
		endCol: 4,
		endIndex: 7,
		fix: {
			desc: 'close',
			range: [8, 8],
			text: "''",
		},
	},
]);
assert.deepStrictEqual(h1.lint(), [
	{
		rule: 'h1',
		severity: 'error',
		message: '<h1>',
		startLine: 3,
		startCol: 1,
		startIndex: 13,
		endLine: 3,
		endCol: 4,
		endIndex: 16,
		suggestions: [
			{
				desc: 'h2',
				range: [13, 16],
				text: '= b =',
			},
		],
	},
]);
assert.deepStrictEqual(h3.lint(), [
	{
		rule: 'unbalanced-header',
		severity: 'error',
		message: 'unbalanced "=" in a section header',
		startLine: 4,
		startCol: 3,
		startIndex: 21,
		endLine: 4,
		endCol: 10,
		endIndex: 28,
		suggestions: [
			{
				desc: 'h3',
				range: [21, 23],
				text: '',
			},
			{
				desc: 'h5',
				range: [28, 28],
				text: '==',
			},
		],
	},
	{
		rule: 'format-leakage',
		severity: 'error',
		message: 'unbalanced italic apostrophes in a section header',
		startLine: 4,
		startCol: 7,
		startIndex: 25,
		endLine: 4,
		endCol: 9,
		endIndex: 27,
		fix: {
			desc: 'remove',
			range: [25, 27],
			text: '',
		},
	},
]);

json

🌐 展开

以HTML格式输出。

// json
var {lastChild} = Parser.parse('\n=a=');
assert.deepStrictEqual(lastChild.json(), {
	range: [1, 4],
	type: 'heading',
	level: 1,
	childNodes: [
		{
			range: [2, 3],
			type: 'heading-title',
			childNodes: [
				{
					range: [2, 3],
					data: 'a',
				},
			],
		},
		{
			range: [4, 4],
			type: 'heading-trail',
			childNodes: [
				{
					range: [4, 4],
					data: '',
				},
			],
		},
	],
});

cloneNode

展开

returns: this
深拷贝节点。

// cloneNode (main)
var {firstChild} = Parser.parse('==a==');
assert.equal(firstChild, '==a==');
assert.deepStrictEqual(firstChild.cloneNode(), firstChild);

setLevel

展开

param: number 标题层级
设置标题层级。

// setLevel (main)
var {firstChild} = Parser.parse('==a==');
assert.equal(firstChild, '==a==');
firstChild.setLevel(3);
assert.equal(firstChild, '===a===');

toHtml

展开

加入的版本:1.10.0

returns: string
转换为 HTML。

// toHtml (main)
var {firstChild} = Parser.parse("= '' a  b '' =");
assert.strictEqual(
	firstChild.toHtml(),
	'<div class="mw-heading mw-heading1"><h1 id="a_b"><i> a  b </i></h1></div>',
);
⚠️ **GitHub.com Fallback** ⚠️