esyn 0.2.2

Rusty Config File Parser.
Documentation

[WIP] esyn

Rusty Config File Parser.

Example

use esyn::{Esyn, EsynDe};

fn main() {
    let config = r#"
fn test_example() {
    let a = Config {
        name: "hi",
        map: Map::Down,
        map2: Map::Any("llll"),
        map3: Map::Named {
            a: 1,
            _color: Color { fg: 32, bg: 12 },
        },
        invert_mouse: false,
        font: Some("abc"),
        window: Window {
            color: Color { fg: 32 },
        },
        _tuple: (1, ("hi"), 2),
        _opt_enum: None,
    };

    a.window = Window {
        borderless: true,
        topmost: true,
    };
    a.window.borderless = false;
    a.window.color = Color { bg: 12 };
}

"#;
    let esyn = esyn::Esyn::new(&config).unwrap();

    #[derive(Debug, PartialEq, EsynDe)]
    enum Map {
        Any(String),
        Named { a: u8, _color: Color },
        Down,
        Up,
    }

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

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

    #[derive(Debug, PartialEq, EsynDe)]
    struct Config {
        name: String,
        invert_mouse: bool,
        font: Option<String>,
        window: Window,
        _opt_enum: Option<Color>,

        map: Map,
        map2: Map,
        map3: Map,
        _tuple: (u8, String, u32),
    }

    let list = esyn.get::<Config>("test_example").unwrap();
    let a = &list[0];

    assert_eq!(a.name, "hi".to_string());
    assert_eq!(a.map, Map::Down);
    assert_eq!(a.font, Some("abc".to_string()));

    assert_eq!(a.window.borderless, false);
    assert_eq!(a.window.topmost, true);

    dbg!(a);
}

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