@ciolabs/htmlparser2 来源
一个包裹周围 htmlparser2 软件 将源区域信息添加到 AST 中.
安装
npm install @ciolabs/htmlparser2-source
使用量
import { parseDocument } from '@ciolabs/htmlparser2-source';
const html = '<div>hello</div>';
const document = parseDocument(html);
API 密码
解析文档( 数据, 选项 )
解析 HTML并返回每个元素附有源区域信息的文档.
参数
data(单位:千美元)string) - 分析的 HTML 字符串options(单位:千美元)Options选项 htmlparser2 解析器选项 财务报告和审定财务报表 多姆汉德勒选项
回返
回返a SourceDocument 具有强化元素,包括源范围信息.
选项
autofix
这将在缺失的近距离标记中添加到 AST 中. 注意,由于它们不存在源头,它们会有−1的指数位置.
import { parseDocument, nodeToString } from '@ciolabs/htmlparser2-source';
const html = '<div>hello';
const document = parseDocument(html, { autofix: true });
console.log(nodeToString(document)); //=> <div>hello</div>
类型
来源元素
包含源区域信息的增强的 HTML 元素 :
type SourceElement = {
source: {
openTag: {
startIndex: number;
endIndex: number;
data: string;
name: string;
isSelfClosing: boolean;
};
closeTag: {
startIndex: number;
endIndex: number;
data: string;
name: string;
} | null;
attributes: Array<{
name: {
startIndex: number;
endIndex: number;
data: string;
};
value: {
startIndex: number;
endIndex: number;
data: string;
} | null;
quote: '"' | "'" | null | undefined;
source: {
startIndex: number;
endIndex: number;
data: string;
};
}>;
};
children: SourceChildNode[];
};
源文件
带有位置公用设施的强化文件:
type SourceDocument = {
children: SourceChildNode[];
offsetToPosition(offset: number): { line: number; character: number };
};
工具函数
节点toString( 节点)
将解析的节点转换回其 HTML 字符串表示式.
import { parseDocument, nodeToString } from '@ciolabs/htmlparser2-source';
const html = '<div class="test">content</div>';
const document = parseDocument(html);
console.log(nodeToString(document)); // '<div class="test">content</div>'
类型警卫
软件包导出几种类型的守护功能:
isTag(node)- 检查节点是否是源元素isText(node)- 检查节点是否是一个文本节点isComment(node)- 检查节点是否是一个评论节点isDocument(node)- 检查节点是否是源文件isCDATA(node)- 检查节点是否是CDATA区段isDirective(node)- 检查节点是否是一个处理指令isDoctype(node)- 检查节点是否为 doctype 声明