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