-
Notifications
You must be signed in to change notification settings - Fork 2
AstText
bhsd edited this page Dec 11, 2023
·
28 revisions
纯文本节点,继承了 AstNode 的属性和方法。仿照 Text 类设计,属性和方法也和 Text 类非常相似。
✅ 展开
type: 'text'
只读。反过来 type: 'text'
也一定对应纯文本节点。
// type
var {firstChild} = Parser.parse('a');
assert.strictEqual(firstChild.type, 'text');
✅ 展开
type: string
文本内容,只读。
// data
var {firstChild} = Parser.parse('a');
assert.strictEqual(firstChild.data, 'a');
展开
type: number
文本长度,只读。
// length
var {firstChild} = Parser.parse('a');
assert.strictEqual(firstChild.length, 1);
✅ 展开
returns: LintError[]
报告潜在语法错误。
// lint
var {firstChild} = Parser.parse('{{[[<div');
assert.equal(firstChild, '{{[[<div');
assert.deepStrictEqual(firstChild.lint(), [
{
severity: 'error',
message: 'lonely "{"',
startLine: 0,
startCol: 0,
startIndex: 0,
endLine: 0,
endCol: 2,
endIndex: 2,
excerpt: '{{[[<div',
},
{
severity: 'error',
message: 'lonely "["',
startLine: 0,
startCol: 2,
startIndex: 2,
endLine: 0,
endCol: 4,
endIndex: 4,
excerpt: '{[[<div',
},
{
severity: 'warning',
message: 'lonely "<"',
startLine: 0,
startCol: 4,
startIndex: 4,
endLine: 0,
endCol: 8,
endIndex: 8,
excerpt: '[<div',
},
])
✅ 展开
param: string
替换的字符串
替换字符串。
// replaceData
var {firstChild} = Parser.parse('a');
firstChild.replaceData('b');
assert.equal(firstChild, 'b');
展开
returns: this
拷贝节点。
// cloneNode
var {firstChild} = Parser.parse('a');
assert.deepStrictEqual(firstChild.cloneNode(), firstChild);
展开
param: string
添加的字符串
在后方添加字符串。
// appendData
var {firstChild} = Parser.parse('a');
firstChild.appendData('b');
assert.equal(firstChild, 'ab');
展开
param: number
起始位置
param: number
删减字符数
删减字符串。
// deleteData
var {firstChild} = Parser.parse('abc');
firstChild.deleteData(1, 1);
assert.equal(firstChild, 'ac');
展开
param: number
插入位置
param: string
待插入的字符串
插入字符串。
// insertData
var {firstChild} = Parser.parse('ab');
firstChild.insertData(1, 'c');
assert.equal(firstChild, 'acb');
展开
param: number
起始位置
param: number
字符数
returns: string
提取子串。
// substringData
var {firstChild} = Parser.parse('abc');
assert.strictEqual(firstChild.substringData(1, 1), 'b');
展开
param: number
分裂位置
将文本子节点分裂为两部分。
// splitText
var {firstChild} = Parser.parse('ab');
firstChild.splitText(1);
assert.equal(firstChild, 'a');
assert.equal(firstChild.nextSibling, 'b');
对维基文本批量执行语法检查的命令行工具
用于维基文本的 ESLint 插件
A command-line tool that performs linting on Wikitext in bulk
ESLint plugin for Wikitext