#pattern #code #search-pattern #search

app naming_clt

从文件或stdin中提取和转换标识符的命名格式(case|notation)。使用此工具为相对文件上的进一步操作(匹配、替换...)准备标识符名称字符串。

2个稳定版本

1.1.0 2021年12月28日
1.0.0 2021年11月3日

#1759文本处理

MIT 许可证

44KB
862

命名

CI Crates Version

命名是一个命令行工具,可以帮助您从文件或stdin中提取和转换标识符的命名格式(case|notation)。使用此工具为相对文件上的进一步操作(匹配、替换...)准备标识符名称字符串。

它能做什么?

您可以将标识符转换为不同的命名格式,并具有多种输出格式。

$ echo "userId" | naming
userId USER_ID user_id user-id userId UserId

$ echo "userId" | naming --json
{"result":[{"origin":"userId","screaming_snake":"USER_ID","snake":"user_id",
"kebab":"user-id","camel":"userId","pascal":"UserId"}]}

$ echo "userId" | naming --regex
userId USER_ID|user_id|user-id|userId|UserId

您可以从文件或stdin中提取标识符(通过管道,如上所示)。

$ cat a.txt
SCREAMING_SNAKE
snake_case
kebab-case
camelCase
PascalCase
$ naming a.txt
SCREAMING_SNAKE SCREAMING_SNAKE screaming_snake screaming-snake screamingSnake ScreamingSnake
snake_case SNAKE_CASE snake_case snake-case snakeCase SnakeCase
kebab-case KEBAB_CASE kebab_case kebab-case kebabCase KebabCase
camelCase CAMEL_CASE camel_case camel-case camelCase CamelCase
PascalCase PASCAL_CASE pascal_case pascal-case pascalCase PascalCase

以下示例比手动输入命令更复杂,但它自动化了这个过程,这也是我们制作此工具的原因。通过将此工具与其他工具结合使用,您可以编写有关标识符格式相关任务的shell脚本。

# Search all positions of an identifier in project directory
$ echo "pageSize" | naming | xargs -n1 -I {} -- grep -r {} src_dir

# Change one identifier from camelCase to snake_case
$ echo "pageSize" | naming --output=s | \
    xargs -l -t -- bash -c 'sed -i "s/$0/$1/g" src_file'
bash -c 'sed -i "s/$0/$1/g" src_file' pageSize page_size
(^-- `xargs -t` output) (run sed command...)

安装

我们为 x86_64-pc-windows-gnux86_64-unknown-linux-muslx86_64-apple-darwin 平台提供预编译的二进制文件,您可以在 发布页面 下载它们。

您也可以从源代码(假设您已安装 Rust开发工具链)直接构建它,按照 构建 进度进行。

或者只需键入

$ cargo install naming_clt

以安装稳定版本。

构建

常规过程即可

$ git clone https://github.com/boholder/naming
$ cd naming
$ cargo build --release
$ ./target/release/naming --help
$ (print help information)

在将源代码克隆到本地计算机后,您可以通过以下方式运行所有测试:

$ cd naming
$ cargo test --all

有两个 被忽略的测试,请勿担心,这两个测试使我们缩小了工具的功能,避免重复实现grep的功能。

贡献

  • 您是否觉得 用户指南帮助信息 听起来自然?帮助我们修复语法错误并润色描述。
  • 当您发现错误或提出建议时,请随时提交新的 问题
  • 此工具适合与哪些命令行工具结合使用?您是否找到了使用此工具的有用方法?请随时提交问题或PR以分享您的发现。

依赖

~3–4.5MB
~70K SLoC