gel-config 0.1.0

Configuration file parser for Gel.
Documentation
use std::{collections::HashMap, time::Duration};

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ConfigInput {
    String(String),
    Integer(i64),
    Float(f64),
    Boolean(bool),
    DateTime(String),
    Duration(Duration),
    Date(String),
    Time(String),
    Array(Vec<ConfigInput>),
    Object {
        tname: String,
        values: HashMap<String, ConfigInput>,
    },
    Null,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ConfigSchemaType {
    String,
    Integer,
    Float,
    Boolean,
    DateTime,
    Duration,
    Date,
    Time,
    Array(Box<ConfigSchemaType>),
    Object(HashMap<String, ConfigSchemaType>),
    Enum(Vec<ConfigObject>),
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConfigObject {
    pub name: String,
    pub schema: HashMap<String, ConfigSchemaType>,
}