mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-12-25 14:10:06 +01:00
add a smol README
This commit is contained in:
parent
54aec7ac5f
commit
b165c77fa7
35
filter_parser/README.md
Normal file
35
filter_parser/README.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Filter parser
|
||||||
|
|
||||||
|
This workspace is dedicated to the parsing of the MeiliSearch filters.
|
||||||
|
|
||||||
|
Most of the code and explanation are in the [src/lib.rs]. Especially, the BNF of the filters at the top of this file.
|
||||||
|
|
||||||
|
The parser use [nom](https://docs.rs/nom/) to do most of its work and [nom-locate](https://docs.rs/nom_locate/) to keep track of what we were doing when we encountered an error.
|
||||||
|
|
||||||
|
## Cli
|
||||||
|
A simple main is provided to quick-test if a filter can be parsed or not without bringing milli.
|
||||||
|
It takes one argument and try to parse it.
|
||||||
|
```
|
||||||
|
cargo run -- 'field = value' # success
|
||||||
|
cargo run -- 'field = "doggo' # error => missing closing delimiter "
|
||||||
|
```
|
||||||
|
|
||||||
|
## Fuzz
|
||||||
|
The workspace have been fuzzed with [cargo-fuzz](https://rust-fuzz.github.io/book/cargo-fuzz.html).
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
You'll need rust-nightly to execute the fuzzer.
|
||||||
|
|
||||||
|
```
|
||||||
|
cargo install cargo-fuzz
|
||||||
|
```
|
||||||
|
|
||||||
|
### Run
|
||||||
|
```
|
||||||
|
cargo fuzz run parse
|
||||||
|
```
|
||||||
|
|
||||||
|
## What to do if you find a bug in the parser
|
||||||
|
|
||||||
|
- Write a test at the end of the [src/lib.rs] to ensure it never happens again.
|
||||||
|
- Add a file in [fuzz/corpus/parse/] with your filter to help the fuzzer finding new bug.
|
Loading…
x
Reference in New Issue
Block a user