2 个稳定版本
1.1.0 | 2024 年 4 月 7 日 |
---|---|
1.0.0 | 2024 年 4 月 7 日 |
#971 in 命令行实用工具
4MB
7.5K SLoC
README
作者: tajpulo
版本 1.1.0
这是什么?
作为一名软件开发者,我经常需要查看字符串并对它们进行操作。我经常在命令行中使用 python 或求助于客户端 Web 应用程序。但操作总是相同的,并且应该可以通过一次 CLI 调用来访问。
我创建了 opstr,这样你就可以扔进一大堆字符串,然后得到各种操作的结果。或者你指定一个操作,然后得到可预测的结果。它还简化了在 shell 中运行字符串操作的过程。
为什么我应该使用它?
为了对字符串应用操作。
谁应该使用它?
任何处理文本字符串的人(在 Unicode 意义上,即代码点的序列)。
如何安装
通过 crates.io 安装我
cargo add opstr
如何运行
- 前往 https://github.com/typho/opstr
- 点击“发布”链接
- 向下滚动,选择适合您平台的下载
- 下载完成后,提取 tar-gz 归档文件的文件
- 为平台文件添加可执行权限
- 在命令行中运行可执行文件 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}
将被指定的本地化替换。
添加自己的函数
如果你有新的函数要实现...
- 决定函数名称
- 创建文件 src/ops/NAME.rs(在基本名中使用下划线而不是连字符)
- 将函数添加到 src/ops/mod.rs
- 该文件必须实现Op trait
兼容性保证
我们遵循semver原则
- 破坏API需要主版本更新。更改函数的行为或扩展非穷举API元素需要次版本更新。安全漏洞修复或严重问题(如果可以通过向后兼容的方式修复)通过补丁版本修复。
- 自1.0版本发布以来,操作名称是固定的。操作将永远不会消失。操作将始终实现其描述的功能。需要不同数量的参数或更改参数需要主版本更新。
- 当未指定
--op
时操作顺序(更具体地说,内部优先级)只需要补丁版本 - 软件许可证不会更改。
发布管理
创建新版本之前需要注意的事项
- 更新UnicodeData
- 更新NamesList
- 更新SpecialCasing(待办事项:尚未使用)
- 使用
icu4x-datagen -W -o data/icu4x_en-US.blob2 --include-collations search-all --trie-type small --locales en-us --keys all --format blob
重新生成CLDR数据 - 审查要更新的crate版本
- Unicode "标量"/"字符"/"码点"?码点!复数/单数?取决于意义。一个?单数!许多?复数!未知?复数!
- 验证你是否计划进行主要/次要/补丁版本发布
- 验证Op rust类型是否与其报告的名称字符串匹配(待办事项:为此构建自动化工具?)
- 更新README.adoc和main.rs中的版本号
注意:Unicode/ASCII方法
我们有一个通用的操作名称。如果用户指定了地区,我们需要提供正确的Unicode兼容结果(可能需要正确的OPSTR_LOCALE_DATAFILE
)。如果用户没有指定地区,我们需要提供一种尽力而行的无Unicode替代方案。
我们还可以将无Unicode算法作为附加操作公开(例如,sort与
sort-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