#查询 #CSV #DSL #DSV #模式匹配

app dsv-seeker

一个简单的 DSV 查询解释器

1 个不稳定版本

0.1.0 2022年11月7日

#93#模式匹配

MIT 许可证

23KB
535

DSV Seeker

一个用于在 DSV 文件上运行基本查询的小工具。

  1. 命令
  2. 如何添加新命令

命令

"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 命令删除第一行,通常是标题行。

如何添加新命令

尽可能将命令组织在独立的模块中。
步骤

  1. 将语法规则添加到语法.pest 文件
    • 在其他命令的规则下创建一个新规则,位于 command 规则之上。
    • 将此规则添加到 command 规则的末尾。
  2. 将您的命令添加到 src/ast.rs 中的 Command 枚举。
  3. src/ast.rs::build_command 中处理从规则到新 Command::[your_rule] 的匹配。
  4. src/operators/ 中创建您的命令文件,并将新模块添加到 src/operators/mod.rs
  5. 查看其他命令以了解如何编写您的命令。
  6. src/ast.rs::Ast::run_on 中添加您的规则的匹配案例。
  7. 将命令添加到本 README 和 src/main.rs::Cli 的文档注释。

依赖关系

~9MB
~158K SLoC