14 releases
0.5.4 | Apr 1, 2024 |
---|---|
0.5.3 | Oct 7, 2023 |
0.5.1 | Jun 22, 2022 |
0.5.0 | Nov 25, 2021 |
0.1.0 | Jul 15, 2021 |
#441 in Encoding
60 downloads per month
Used in serde_gura
77KB
1.5K
SLoC
Gura Rust parser
IMPORTANT: if you need to use Gura in a more user-friendly way, you have at your disposal Serde Gura which allows you to perform Serialization/Deserialization with ease.
This repository contains the implementation of a Gura (compliant with version 1.0.0) format parser for Rust lang.
Installation
Add the dependency to your Cargo.toml
:
[dependencies]
gura = "0.5.4"
Usage
use gura::{dump, parse, GuraType};
fn main() {
let gura_string = r##"
# This is a Gura document.
title: "Gura Example"
an_object:
username: "Stephen"
pass: "Hawking"
# Line breaks are OK when inside arrays
hosts: [
"alpha",
"omega"
]"##;
// Parse: transforms a Gura string into a dictionary
let parsed = parse(&gura_string).unwrap();
// Debug and Display
// println!("{:#?}", parsed);
// println!("{}", parsed);
// Access a specific field
println!("Title -> {}", parsed["title"]);
// Iterate over structure
println!("\nHosts:");
if let GuraType::Array(hosts) = &parsed["hosts"] {
for host in hosts.iter() {
println!("Host -> {}", *host);
}
}
// Dump: transforms a dictionary into a Gura string
let string_again = dump(&parsed);
println!("\n+++++ Dump result +++++");
println!("{}", string_again);
}
Contributing
All kind of contribution is welcome! If you want to contribute just:
- Fork this repository.
- Create a new branch and introduce there your new changes.
- Make a Pull Request!
Or you can join to our community in Discord!
Tests
To run all the tests: cargo test
License
This repository is distributed under the terms of the MIT license.
Dependencies
~5.5MB
~89K SLoC