A small tool to run basic queries on DSV files.
"select" ("*" | (name ("," name)*))
The select
command keeps only the desired columns.
"where" name (("=" value) | ("like" pattern))
The where
command filters rows based on string equality or pattern matching of the value in the name
d column.
"enum" name
The enum
command outputs two columns, respectively the number of appearances of a value and the value itself.
This is similar in a way to running uniq -c
in Bash.
"sort" "num"? name ("asc" | "desc")
The sort
command sorts rows based on the name
d column.
"trim" ("*" | (name ("," name)*))
The trim
command removes heading and trailing whitespace from desired columns' values.
behead
The behead
command removes the first line, that usually being the headers.
Commands are organized in isolated modules as much as possible.
Steps
1. Add the grammar rule to the grammar.pest file:
- Create a new rule under the other commands' rules, right above the command
rule.
- Add that rule to the end of the command
rule.
2. Add your command to the Command
enum in src/ast.rs
.
3. Handle matching from the rule to a new Command::[your_rule]
in src/ast.rs::build_command
.
4. Create your command's file in src/operators/
and add the new module to src/operators/mod.rs
.
5. Look at other commands to figure out how to write yours.
6. Add the match case for your rule in src/ast.rs::Ast::run_on
.
7. Add the command to this README and to the src/main.rs::Cli
doc comment.