esyn 0.3.0

Rusty Config File Parser.
Documentation

[WIP] esyn

Rusty Config File Parser.

Example

use esyn::{Esyn, EsynDe};

#[derive(Debug, PartialEq, Default, EsynDe)]
struct Config {
    name: String,
    opt: Option<u8>,
    window: Window,
    map: Map,
}

#[derive(PartialEq, EsynDe)]
enum Map {
    Up,
    Down,
    Any(String),
}

impl Default for Map {
    fn default() -> Self {
        Map::Up
    }
}

#[derive(Debug, PartialEq, Default, EsynDe)]
struct Window {
    borderless: bool,
    topmost: bool,
    color: Color,
}

#[derive(Debug, PartialEq, Default, EsynDe)]
struct Color {
    bg: u8,
    fg: u8,
}

fn main() {
    let config = r#"
fn main() {
    let a = Config {
        name: "hi",
        map: Map::Down,
        window: Window {
            borderless: true,
            topmost: false,
        },
        opt: Some(56),
    };

    a.window.color = Color {
        bg:13,
        fg:12,
    };
}
"#;
    let esyn = Esyn::new(&config).unwrap();
    let map = esyn.get::<Config>("main").unwrap();
    let a = map.get("a").unwrap();

    assert_eq!(
        a,
        &Config {
            name: "hi".to_string(),
            map: Map::Down,
            window: Window {
                borderless: true,
                topmost: false,
                color: Color { bg: 13, fg: 12 },
            },
            opt: Some(56),
        }
    );
}

Supported Types

u8 u16 u32 u64 u128 usize
i8 i16 i32 i64 i128 isize
f32 f64
bool
char String

Option<T>
Vec<T>

Struct
Enum