Skip to content

AstText

bhsd edited this page Nov 25, 2023 · 28 revisions

简介

纯文本节点,继承了 AstNode 的属性和方法。仿照 Text 类设计,属性和方法也和 Text 类非常相似。

✅ 在 MiniBrowser 版本中可用。

Properties

type

✅ 展开

type: 'text'
只读。反过来 type: 'text' 也一定对应纯文本节点。

var {firstChild} = Parser.parse('a');
assert.strictEqual(firstChild.type, 'text');

data

✅ 展开

type: string
文本内容,只读。

var {firstChild} = Parser.parse('a');
assert.strictEqual(firstChild.data, 'a');

length

展开

type: number
文本长度,只读。

var {firstChild} = Parser.parse('a');
assert.strictEqual(firstChild.length, 1);

Methods

lint

✅ 展开

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

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',
	},
])

replaceData

✅ 展开

param: string 替换的字符串
替换字符串。

var {firstChild} = Parser.parse('a');
firstChild.replaceData('b');
assert.equal(firstChild, 'b');

cloneNode

展开

returns: this
拷贝节点。

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

appendData

展开

param: string 添加的字符串
在后方添加字符串。

var {firstChild} = Parser.parse('a');
firstChild.appendData('b');
assert.equal(firstChild, 'ab');

deleteData

展开

param: number 起始位置
param: number 删减字符数
删减字符串。

var {firstChild} = Parser.parse('abc');
firstChild.deleteData(1, 1);
assert.equal(firstChild, 'ac');

insertData

展开

param: number 插入位置
param: string 待插入的字符串
插入字符串。

var {firstChild} = Parser.parse('ab');
firstChild.insertData(1, 'c');
assert.equal(firstChild, 'acb');

substringData

展开

param: number 起始位置
param: number 字符数
returns: string
提取子串。

var {firstChild} = Parser.parse('abc');
assert.strictEqual(firstChild.substringData(1, 1), 'b');

splitText

展开

param: number 分裂位置
将文本子节点分裂为两部分。

var {firstChild} = Parser.parse('ab');
firstChild.splitText(1);
assert.equal(firstChild, 'a');
assert.equal(firstChild.nextSibling, 'b');
Clone this wiki locally