Updated README
This commit is contained in:
parent
066d927f3b
commit
923347434b
1 changed files with 50 additions and 1 deletions
51
README.md
51
README.md
|
@ -1,2 +1,51 @@
|
|||
# eyes
|
||||
# Eyes
|
||||
|
||||
## A simpler way to parse using human-readable templates
|
||||
|
||||
Eyes was made for the primary purpose of parsing challenge inputs for [Advent of Code](https://adventofcode.com) challenges.
|
||||
|
||||
It currently provides limited functionality, but more options may be added provided they are useful additions for parsing slightly more complicated formats.
|
||||
|
||||
I was told this functionality is similar to `scanf` from C.
|
||||
|
||||
### Examples:
|
||||
|
||||
```rust
|
||||
let input = "#lol @ 338,7643: 20.2x24.5";
|
||||
let template = "#{} @ {},{}: {}x{}";
|
||||
|
||||
println!("input: '{}'", input);
|
||||
println!("pattern: '{}'", template);
|
||||
|
||||
let (id, x, y, w, h) = parse!(input, template, String, isize, isize, f64, f64);
|
||||
|
||||
println!("id: {:?}", id);
|
||||
println!("x: {:?}", x);
|
||||
println!("y: {:?}", y);
|
||||
println!("w: {:?}", w);
|
||||
println!("h: {:?}", h);
|
||||
|
||||
assert_eq!((id.as_str(), x, y, w, h), ("lol", 338, 7643, 20.2, 24.5));
|
||||
|
||||
```
|
||||
|
||||
**Eyes** will try to expand its captures, so that the following example also works as expected:
|
||||
|
||||
```rust
|
||||
let input = "turn off 660,55 through 986,197";
|
||||
let template = "{} {},{} through {},{}";
|
||||
|
||||
println!("input: '{}'", input);
|
||||
println!("pattern: '{}'", template);
|
||||
|
||||
let (op, x1, y1, x2, y2) = try_parse!(input, template, String, usize, usize, usize, usize);
|
||||
|
||||
println!("op: {:?}", op);
|
||||
println!("p1: {:?}", (&x1, &y1));
|
||||
println!("p2: {:?}", (&x2, &y2));
|
||||
|
||||
assert_eq!(
|
||||
(op.unwrap().as_str(), x1, y1, x2, y2),
|
||||
("turn off", Ok(660), Ok(55), Ok(986), Ok(197))
|
||||
);
|
||||
```
|
||||
|
|
Loading…
Reference in a new issue