3 个版本
0.1.2 | 2022 年 5 月 20 日 |
---|---|
0.1.1 | 2022 年 5 月 20 日 |
0.1.0 | 2022 年 5 月 19 日 |
#525 在 命令行界面 中
28KB
530 行
smashquote
smashquote - 从字节切片中删除 C 样式引号
smashquote
从字节切片中删除 C 样式引号和转义序列。具体来说,它理解 bash 的 $''
格式。与 snailquote 不同,smashquote 在字节切片上工作。它旨在用于命令行工具和参数解析,其中可能需要处理 OsString,而不是处理 unicode String。因此,smashquote 不一定产生有效的 Unicode。
例如,可能希望有一个 CLI 工具接受分隔符,如 xargs 或 cut。在这种情况下,用户在命令行上输入如 -d '\r\n'
这样的参数是方便的。smashquote 可以将它们转换为正确的字节序列。
特性
smashquote 理解以下反斜杠转义序列
\a
- 警报/铃声0x07
\b
- 退格0x08
\e
- 转义0x1B
\f
- 表格0x0C
\n
- 换行0x0A
(Unix 换行符)\r
- 回车0x0D
\t
- 制表符0x09
(水平制表符)\v
- 垂直制表符0x0B
\\
- 反斜杠0x5C
(单个\
)\'
- 单引号0x27
(单个'
)\"
- 双引号0x22
(单个"
)0
到377
- 单个字节,以八进制指定。序列在第一个非十六进制数字处停止。\x0
到\xFF
- 一个字节,以十六进制指定。序列在第一个非十六进制数字的字符处停止。\u0
到\uFFFF
- 单个字符的 utf8 字节,以十六进制指定。序列在第一个非十六进制数字的字符处停止。\u{0}
到\u{10FFFF}
- 单个字符的 utf8 字节,以 Rust 风格的十六进制指定U0
到UFFFFFFFF
- 单个字符的 utf8 字节,以十六进制指定(当然,实际最大值是 10FFFF,因为这是当前有效的最大代码点)。序列在第一个非十六进制数字的字符处停止。\c@
,\cA
到\cZ
,\c[
,\c\
,\c]
,\c^
,\c_
- 控制字符(不区分大小写)0x0
到0x1F
\c`
,\ca
到\cz
,\c{
,\c|
,\c}
,\c~
- 控制字符(与上面相同)0x0
到0x1F
smashquote 产生的错误与 anyhow 等crate兼容。
致谢
感谢 Zoybean 和 zkat 在各种编码问题和改进建议方面的帮助。
许可:MIT OR Apache-2.0 OR GPL-3.0-or-later