rainbow-pest 0.1.0

Arc Readable Configuration Parser via Pest
Documentation
use hex_color::HexColor;
use std::collections::HashMap;

mod object;

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ASTProgram {
    pub statements: Vec<ASTStatement>,
}

#[derive(Clone, Debug, Eq, PartialEq)]
pub enum ASTStatement {
    Import(ImportStatement),
    Schema(SchemaStatement),
    Meta(MetaStatement),
    Global(LanguageStatement),
}

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ImportStatement {}

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct SchemaStatement {
    pub schema: String,
    pub object: Object,
}

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct MetaStatement {
    pub meta: String,
    pub object: Object,
}

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct LanguageStatement {
    pub language: String,
    pub inherit: Option<String>,
    pub attributes: Object,
}

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Object {
    inherit: Option<Namespace>,
    inner: HashMap<String, RangedValue>,
}

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct KvPair {
    pub key: String,
    pub value: RangedValue,
}

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Namespace {}

#[derive(Clone, Debug, Eq, PartialEq)]
pub enum RangedValue {
    Null,
    String(String),
    Number(String),
    Boolean(bool),
    Color(HexColor),
    Array(Vec<RangedValue>),
    Namespace(Vec<String>),
    Object(Object),
}