@ansi-tools/parser (英语)
解析器为ANSI出逃序列.
特征
- 支持CSI,OSC,DCS,ESC,APC,SOS,PM等.
- QQ 处理 7- 位 (
\x1b或者说\u001b)和8位数(\u009b(a) 介绍者 - 处理八进制
\033)和简称\e介绍者( 只逃脱) - QQ 多个字符串终止符(
\x1b\\, (中文(简体) ),\x07(中文(简体) ) - 零依赖关系
- QQ 为原始输入和逃出输入单独优化模块
用于 类工具。 。 。 .
安装
npm install @ansi-tools/parser
使用量
import { parse } from "@ansi-tools/parser";
const input = "\x1b[31mHello\x1b[0m World";
for (const code of parse(input)) {
console.log(code);
}
逃出和未逃出输入有区别. 只有逃出来
输入字符串 原始输入和位置可以在符号和
控制密码 默认和 /escaped 导入.
默认和未脱逃的标志化速度大约为~30%. 使用这个,如果你 只需要控制密码.
实例
默认( raw/ unscaped)
import { parse } from "@ansi-tools/parser";
parse(`\x1b[31mHello\x1b[0m`);
// result:
[
{
type: "CSI",
pos: 0,
raw: "\u001b[31m",
command: "m",
params: ["31"],
},
{
type: "TEXT",
pos: 5,
raw: "Hello",
},
{
type: "CSI",
pos: 10,
raw: "\u001b[0m",
command: "m",
params: ["0"],
},
];
逃脱
import { parse } from "@ansi-tools/parser/escaped";
parse(String.raw`\x1b[31mHello\x1b[0m`);
// result:
[
{
type: "CSI",
pos: 0,
raw: "\\x1b[31m",
command: "m",
params: ["31"],
},
{
type: "TEXT",
pos: 8,
raw: "Hello",
},
{
type: "CSI",
pos: 13,
raw: "\\x1b[0m",
command: "m",
params: ["0"],
},
];
调试器生成器( E)
默认和默认的发件机和发件机也可用
/escaped 各个版本.
符号化
import { tokenize } from "@ansi-tools/parser";
const input = "\x1b[31m";
for (const token of tokenize(input)) {
console.log(token);
}
发电机
import { tokenizer, parser } from "@ansi-tools/parser";
const input = "\x1b[31mHello\x1b[0m";
const tokens = tokenizer(input);
const codes = parser(tokens);
for (const code of codes) {
console.log(code);
}
类型定义
function tokenize(input: string): TOKEN[];
function parse(input: string): CODE[];
function* tokenizer(input: string): Generator<TOKEN>;
function* parser(tokens: Generator<TOKEN>): Generator<CODE>;
type TOKEN = {
type: "INTRODUCER" | "DATA" | "FINAL" | "TEXT";
pos: number;
raw: string;
code?: string;
intermediate?: string;
};
type CONTROL_CODE = {
type: "CSI" | "DCS" | "DEC" | "ESC" | "OSC" | "SGR" | "STRING" | "PRIVATE";
command: string;
raw: string;
params: string[];
parameterGroups?: string[][];
pos: number;
};
type TEXT = {
type: "TEXT";
raw: string;
pos: number;
};
type CODE = CONTROL_CODE | TEXT;
许可证
公务员制度委员会