TableToken - bhsd-harry/wikiparser-node GitHub Wiki
目录
表格。这个类继承了 Token 类的全部属性和方法,这里不再列出。
✅ 在 Mini 和 Browser 版本中可用。
🌐 在 Browser 版本中可用。
✅ 展开
type: boolean
表格是否闭合。在 Mini 和 Browser 版本中为只读属性。
// 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|}");✅ 展开
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,
},
]);✅ 展开
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]);✅ 展开
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);✅ 展开
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 (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: [],
},
],
});展开
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 (main)
var {firstChild} = Parser.parse("{|\n!a");
assert.equal(firstChild, "{|\n!a");
firstChild.close();
assert.equal(firstChild, "{|\n!a\n|}");展开
returns: this
深拷贝节点。
// cloneNode (main)
var {firstChild} = Parser.parse("{|\n!a");
assert.equal(firstChild, "{|\n!a");
assert.deepStrictEqual(firstChild.cloneNode(), firstChild);展开
转义表格语法。
// 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{{!}}}");展开
returns: number
获取列数。仅用于直接写在 TableToken 下的表格首行。
// getColCount (main)
var {firstChild} = Parser.parse("{|\n|a\n|}");
assert.equal(firstChild, "{|\n|a\n|}");
assert.strictEqual(firstChild.getColCount(), 1);展开
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);展开
加入的版本: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>`,
);