Crate keyvalues_parser[−][src]
Expand description
keyvalues-parser uses pest to parse
VDF text v1 and v2
files to an untyped Rust structure to ease manipulation and navigation. The
parser provides an untyped Vdf representation as well as a linear
TokenStream
The library is primarily used in conjunction with
keyvalues-serde
which provides a more ergonommic (yet more limiting) means of dealing with VDF
text
Installation
Note: this requires at least Rust 1.42.0
Just add the library to your Cargo.toml
[dependencies] keyvalues-parser = "0.1.0"
Usage
There is documentation available here and there are examples available in the examples directory
Quickstart
loginusers.vdf
"users"
{
"12345678901234567"
{
"AccountName" "ACCOUNT_NAME"
"PersonaName" "PERSONA_NAME"
"RememberPassword" "1"
"MostRecent" "1"
"Timestamp" "1234567890"
}
}main.rs
use keyvalues_parser::Vdf; let vdf_text = std::fs::read_to_string("loginusers.vdf")?; let vdf = Vdf::parse(&vdf_text)?; assert_eq!( "12345678901234567", vdf.value.unwrap_obj().keys().next().unwrap() );
Limitations
VDF text is drastically underspecified. This leads to the following liberties being taken
- Not respecting the ordering of key-value pairs, where the pairs are stored in a
BTreeMapthat sorts the values based on the key - Because of limitations in representing sequences, an empty
Vecof values will be rendered as a missing keyvalue pair
Benchmarks
A set of basic benchmarks can be found in the benches directory
These just test timing and throughput for both parsing and rendering of a fairly typical VDF file
Modules
All error information for parsing and rendering
Structs
A loosely typed representation of VDF text
Enums
Enum representing all valid VDF values