#string #operations #command-line #unicode #cli #byte #utility

bin+lib opstr

“操作字符串”命令行实用工具

2 个稳定版本

1.1.0 2024 年 4 月 7 日
1.0.0 2024 年 4 月 7 日

#971 in 命令行实用工具

MIT 许可协议

4MB
7.5K SLoC

README

作者: tajpulo
版本 1.1.0

这是什么?

作为一名软件开发者,我经常需要查看字符串并对它们进行操作。我经常在命令行中使用 python 或求助于客户端 Web 应用程序。但操作总是相同的,并且应该可以通过一次 CLI 调用来访问。

我创建了 opstr,这样你就可以扔进一大堆字符串,然后得到各种操作的结果。或者你指定一个操作,然后得到可预测的结果。它还简化了在 shell 中运行字符串操作的过程。

为什么我应该使用它?

为了对字符串应用操作。

谁应该使用它?

任何处理文本字符串的人(在 Unicode 意义上,即代码点的序列)。

如何安装

通过 crates.io 安装我

cargo add opstr

如何运行

  1. 前往 https://github.com/typho/opstr
  2. 点击“发布”链接
  3. 向下滚动,选择适合您平台的下载
  4. 下载完成后,提取 tar-gz 归档文件的文件
  5. 为平台文件添加可执行权限
  6. 在命令行中运行可执行文件 opstr,例如: opstr --op utf8-bytes "hello" 以获取 [104, 101, 108, 108, 111]

如何配置

请查看帮助菜单以查看所有配置 opstr 的选项。这里我想提到,大多数选项也可以作为环境变量提供。因此,您可以避免在每次 CLI 调用时指定选项,但只需设置一次。环境变量列表如下

  • OPSTR_RADIX: 输出整数时使用的基数
  • OPSTR_HEX_UPPER: 使用大写字母而不是小写字母打印十六进制字母数字
  • OPSTR_COLOR_SCHEME:输出使用的颜色方案
  • OPSTR_LOCALE:用于地域相关操作的本地化设置(默认情况下只支持 en-US
  • OPSTR_SYNTAX:使用的输出表示语法

本地化设置比较复杂,因为如果我为所有本地化都提供可执行文件,那么可执行文件将会非常大。因此,你需要自己生成本地化数据;参考icu4x数据管理,并将此调用中的 en-us 替换为你的本地化设置。

icu4x-datagen-W-o data/icu4x_en-us.blob2--include-collations search-all--trie-type small --locales en-us--keys all--format blob

环境变量 OPSTR_LOCALE_DATAFILE 需要指向要加载的 .blob2 文件,并且你需要指定本地化作为命令行参数或环境变量以使其正常工作。由于你可能为每个指定的本地化指定不同的路径,因此环境变量中的字符串 {filepath} 将被指定的本地化替换。

添加自己的函数

如果你有新的函数要实现...

  1. 决定函数名称
  2. 创建文件 src/ops/NAME.rs(在基本名中使用下划线而不是连字符)
  3. 将函数添加到 src/ops/mod.rs
  4. 该文件必须实现Op trait

兼容性保证

我们遵循semver原则

  • 破坏API需要主版本更新。更改函数的行为或扩展非穷举API元素需要次版本更新。安全漏洞修复或严重问题(如果可以通过向后兼容的方式修复)通过补丁版本修复。
  • 自1.0版本发布以来,操作名称是固定的。操作将永远不会消失。操作将始终实现其描述的功能。需要不同数量的参数或更改参数需要主版本更新。
  • 当未指定--op时操作顺序(更具体地说,内部优先级)只需要补丁版本
  • 软件许可证不会更改。

发布管理

创建新版本之前需要注意的事项

  1. 更新UnicodeData
  2. 更新NamesList
  3. 更新SpecialCasing(待办事项:尚未使用)
  4. 使用icu4x-datagen -W -o data/icu4x_en-US.blob2 --include-collations search-all --trie-type small --locales en-us --keys all --format blob重新生成CLDR数据
  5. 审查要更新的crate版本
  6. Unicode "标量"/"字符"/"码点"?码点!复数/单数?取决于意义。一个?单数!许多?复数!未知?复数!
  7. 验证你是否计划进行主要/次要/补丁版本发布
  8. 验证Op rust类型是否与其报告的名称字符串匹配(待办事项:为此构建自动化工具?)
  9. 更新README.adoc和main.rs中的版本号

注意:Unicode/ASCII方法

我们有一个通用的操作名称。如果用户指定了地区,我们需要提供正确的Unicode兼容结果(可能需要正确的OPSTR_LOCALE_DATAFILE)。如果用户没有指定地区,我们需要提供一种尽力而行的无Unicode替代方案。

我们还可以将无Unicode算法作为附加操作公开(例如,sortsort-lexicographically),因为后缀如lexicographically表示排序算法不需要/考虑Unicode。

注意:终端中的字符串与字节

目前我只接受UTF-8字符串作为参数。该架构允许字符串以及字节作为参数。但是,没有操作支持字节。只要我没有看到支持通过命令行传递给rust的字节的一个清晰路径,我就不会追求这个路径(注意:rust抽象了命令行参数类型,因为Windows提供UTF-16,而POSIX提供字节)。

源代码

源代码可在GitHub上找到。

许可证

请参阅LICENSE文件(提示:MIT许可证)。

变更日志

0.7.0:首次公开发布
0.9.0:最终评估发布
1.0.0:使用Unicode版本15.0,带有向后兼容性保证的发布
1.1.0:Perl支持,为codepoint-frequencies提供确定性输出

问题

请在GitHub问题页面上报告任何问题。

依赖项

~15–24MB
~333K SLoC