1 个不稳定版本
0.1.0 | 2022年11月7日 |
---|
#93 在 #模式匹配
23KB
535 行
DSV Seeker
一个用于在 DSV 文件上运行基本查询的小工具。
命令
"select" ("*" | (name(","name)*))
select
命令仅保留所需的列。
"where"name(("="value) | ("like"pattern))
where
命令根据名为 name
的列中的值进行字符串相等或模式匹配来过滤行。
"enum"name
enum
命令输出两列,分别是值的出现次数和值本身。
这在某种程度上类似于在 Bash 中运行 uniq -c
。
"sort" "num"?name("asc" | "desc")
sort
命令根据名为 name
的列对行进行排序。
"trim" ("*" | (name(","name)*))
trim
命令从所需列的值中删除前导和尾随空白。
behead
behead
命令删除第一行,通常是标题行。
如何添加新命令
尽可能将命令组织在独立的模块中。
步骤
- 将语法规则添加到语法.pest 文件
- 在其他命令的规则下创建一个新规则,位于
command
规则之上。 - 将此规则添加到
command
规则的末尾。
- 在其他命令的规则下创建一个新规则,位于
- 将您的命令添加到
src/ast.rs
中的Command
枚举。 - 在
src/ast.rs::build_command
中处理从规则到新Command::[your_rule]
的匹配。 - 在
src/operators/
中创建您的命令文件,并将新模块添加到src/operators/mod.rs
。 - 查看其他命令以了解如何编写您的命令。
- 在
src/ast.rs::Ast::run_on
中添加您的规则的匹配案例。 - 将命令添加到本 README 和
src/main.rs::Cli
的文档注释。
依赖关系
~9MB
~158K SLoC