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