ITADN
NorfairKing/safe-coloured-text
NorfairKing/safe-coloured-text · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

安全彩色文本

NixCI

需求 / 设计目标

  • 正确使用String/Text/ByteString:有些内容是字符串,有些是文本,还有些是字节,它们彼此并不相同。
  • 不允许存在部分功能的函数
  • 仅用于表示彩色文本块
  • 能够快速打印彩色文本块
  • 能够将彩色文本块转换为非彩色文本,以应对不支持(某些)颜色的终端。
  • (理想情况下)产生最少的额外开销
  • 依赖项尽可能少。
  • 经过充分测试
  • 采用英式拼写(因为我愿意)

依赖项极少

仅依赖bytestringtextterminfo以及相关的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 终端模拟器甚至不支持这一功能,不过也没关系,至少这是可行的。