TableToken - bhsd-harry/wikiparser-node GitHub Wiki

目录

Other Languages

简介

表格。这个类继承了 Token 类的全部属性和方法,这里不再列出。

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

Properties

closed

✅ 展开

type: boolean
表格是否闭合。在 MiniBrowser 版本中为只读属性。

// closed
var {firstChild} = Parser.parse("{|\n!a");
assert.equal(firstChild, "{|\n!a");
assert.ok(!firstChild.closed);
// closed (main)
var {firstChild} = Parser.parse("{|\n!a");
firstChild.closed = true;
assert.equal(firstChild, "{|\n!a\n|}");

Methods

lint

✅ 展开

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

// lint
assert.deepStrictEqual(
	Parser.parse("{|\na\n|a\n|-\n|b||c").firstChild.lint(),
	[
		{
			rule: "fostered-content",
			severity: "warning",
			message: "content to be moved outside the table",
			startLine: 1,
			startCol: 0,
			startIndex: 3,
			endLine: 1,
			endCol: 1,
			endIndex: 4,
		},
		{
			rule: "unclosed-table",
			severity: "error",
			message: "unclosed table",
			startLine: 0,
			startCol: 0,
			startIndex: 0,
			endLine: 0,
			endCol: 2,
			endIndex: 2,
		},
		{
			rule: "table-layout",
			severity: "warning",
			message: "inconsistent table layout",
			startLine: 3,
			startCol: 0,
			startIndex: 8,
			endLine: 4,
			endCol: 5,
			endIndex: 16,
		},
	],
);
assert.deepStrictEqual(
	Parser.parse("{|\n{{#switch:|1=!|2={{!}}|3={{!-}}|4=<td></td>}}\n|}")
		.firstChild
		.lint(),
	[],
);
assert.deepStrictEqual(
	Parser.parse("{|\n{{{a|a}}}\n|-\n{{{b|!}}}\n|-\n{{{c}}}|\n|}", true)
		.firstChild
		.lint(),
	[
		{
			rule: "fostered-content",
			severity: "warning",
			message: "content to be moved outside the table",
			startLine: 1,
			startCol: 0,
			startIndex: 3,
			endLine: 1,
			endCol: 9,
			endIndex: 12,
		},
	],
);
assert.deepStrictEqual(
	Parser.parse("{|\n{{#if:|{{x}}|{{#invoke:y|y}}}}\n|}").firstChild.lint(),
	[
		{
			rule: "fostered-content",
			severity: "warning",
			message: "content to be moved outside the table",
			startLine: 1,
			startCol: 0,
			startIndex: 3,
			endLine: 1,
			endCol: 30,
			endIndex: 33,
		},
	],
);
assert.deepStrictEqual(Parser.parse("{|\n{{#if:|x}}\n|}").firstChild.lint(), [
	{
		rule: "fostered-content",
		severity: "warning",
		message: "content to be moved outside the table",
		startLine: 1,
		startCol: 0,
		startIndex: 3,
		endLine: 1,
		endCol: 10,
		endIndex: 13,
	},
]);

getAllRows

✅ 展开

returns: TdToken[]
获取所有行。

// getAllRows
var {firstChild} = Parser.parse("{|\n!a\n|-\n|b\n|}"),
	tr = firstChild.querySelector("tr");
assert.equal(firstChild, "{|\n!a\n|-\n|b\n|}");
assert.deepStrictEqual(firstChild.getAllRows(), [firstChild, tr]);

getNthRow

✅ 展开

param: number 行号
returns: TrToken
获取第 n 行。

// getNthRow
var {firstChild} = Parser.parse("{|\n!a\n|-\n|b\n|}"),
	tr = firstChild.querySelector("tr");
assert.equal(firstChild, "{|\n!a\n|-\n|b\n|}");
assert.strictEqual(firstChild.getNthRow(0), firstChild);
assert.strictEqual(firstChild.getNthRow(1), tr);

getRowCount

✅ 展开

returns: number
获取行数。

// getRowCount
var {firstChild} = Parser.parse("{|\n|a\n|-\n|}");
assert.equal(firstChild, "{|\n|a\n|-\n|}");
// 表格首行可以直接写在 TableToken 下,没有内容的表格行是无效行。
assert.strictEqual(firstChild.getRowCount(), 1);

json

🌐 展开

将语法树保存为 JSON。

// json (print)
var {lastChild} = Parser.parse(" {|");
assert.deepStrictEqual(lastChild.json(), {
	range: [1, 3],
	type: "table",
	closed: false,
	childNodes: [
		{
			range: [1, 3],
			type: "table-syntax",
			childNodes: [
				{
					range: [1, 3],
					data: "{|",
				},
			],
		},
		{
			range: [3, 3],
			type: "table-attrs",
			name: "table",
			childNodes: [],
		},
	],
});

getNthCol

展开

param: number 列号
returns: TdToken
获取第 n 列。仅用于直接写在 TableToken 下的表格首行。

// getNthCol (main)
var {firstChild} = Parser.parse("{|\n!a\n|}"),
	td = firstChild.querySelector("td");
assert.equal(firstChild, "{|\n!a\n|}");
assert.strictEqual(firstChild.getNthCol(0), td);

close

展开

闭合表格语法。

// close (main)
var {firstChild} = Parser.parse("{|\n!a");
assert.equal(firstChild, "{|\n!a");
firstChild.close();
assert.equal(firstChild, "{|\n!a\n|}");

cloneNode

展开

returns: this
深拷贝节点。

// cloneNode (main)
var {firstChild} = Parser.parse("{|\n!a");
assert.equal(firstChild, "{|\n!a");
assert.deepStrictEqual(firstChild.cloneNode(), firstChild);

escape

展开

转义表格语法。

// escape (main)
var {firstChild} = Parser.parse("{|\n|-\n|a\n|}");
assert.equal(firstChild, "{|\n|-\n|a\n|}");
firstChild.escape();
assert.equal(firstChild, "{{{!}}\n{{!}}-\n{{!}}a\n{{!}}}");

getColCount

展开

returns: number
获取列数。仅用于直接写在 TableToken 下的表格首行。

// getColCount (main)
var {firstChild} = Parser.parse("{|\n|a\n|}");
assert.equal(firstChild, "{|\n|a\n|}");
assert.strictEqual(firstChild.getColCount(), 1);

getNextRow

展开

returns: TrToken
获取下一行(直接写在 TableToken 下的表格首行之后的下一行)。

// getNextRow (main)
var {firstChild} = Parser.parse("{|\n|-\n|a\n|}"),
	tr = firstChild.querySelector("tr");
assert.equal(firstChild, "{|\n|-\n|a\n|}");
assert.strictEqual(firstChild.getNextRow(), tr);

toHtml

展开

加入的版本:1.10.0

returns: string
转换为 HTML。

// toHtml (main)
var {firstChild} = Parser.parse("{|id=t\na\nb\n|c\n|-\nd\ne\n|-\n|f\n|}");
assert.strictEqual(
	firstChild.toHtml(),
	`a b d e<table id="t">
<tbody><tr>
<td>c
</td></tr>

<tr>
<td>f
</td></tr></tbody></table>`,
);
⚠️ **GitHub.com Fallback** ⚠️