NorfairKing/safe-coloured-text · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
安全彩色文本
需求 / 设计目标
- 正确使用
String/Text/ByteString:有些内容是字符串,有些是文本,还有些是字节,它们彼此并不相同。 - 不允许存在部分功能的函数
- 仅用于表示彩色文本块
- 能够快速打印彩色文本块
- 能够将彩色文本块转换为非彩色文本,以应对不支持(某些)颜色的终端。
- (理想情况下)产生最少的额外开销
- 依赖项尽可能少。
- 经过充分测试
- 采用英式拼写(因为我愿意)
依赖项极少
仅依赖bytestring、text、terminfo以及相关的validity库。
经过充分测试
safe-coloured-text库已经拥有超过10,000个测试用例。
其中大部分是黄金测试用例,可确保即使库本身发生变更,输出结果依然正确。
最小化输出
这两段字符串看起来相同,但第二段的长度几乎是第一段的两倍:
safe-coloured-text:
\ESC[34mTests:\ESC[m
Passed: \ESC[32m0\ESC[m
Failed: \ESC[32m0\ESC[m
Test suite took \ESC[33m 0.00 seconds\ESC[m
rainbow:
\ESC[0m\ESC[38;5;4mTests:\ESC[0m
\ESC[0m\ESC[0m
\ESC[0m\ESC[0m
\ESC[0m\ESC[0m
\ESC[0m\ESC[0m
\ESC[0m \ESC[0m\ESC[0mPassed: \ESC[0m\ESC[0m\ESC[38;5;2m0\ESC[0m
\ESC[0m \ESC[0m\ESC[0mFailed: \ESC[0m\ESC[0m\ESC[38;5;2m0\ESC[0m
\ESC[0m \ESC[0m\ESC[0mTest suite took \ESC[0m\ESC[0m\ESC[38;5;3m 0.00 seconds\ESC[0m
\ESC[0m\ESC[0m
如果某个数据块完全为纯文本,safe-coloured-text 将不会输出序列,但它无法解决不同数据块之间的效率问题。
支持 24 位颜色
该库支持输出 24 位颜色的序列。
我的 urxvt 终端模拟器甚至不支持这一功能,不过也没关系,至少这是可行的。