ltk_ritobin 0.12.0

Ritobin text format parser and writer for League Toolkit
Documentation
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum AstRootDetail {
    Node,
    Name,
    TypeExpr,
    Trivia,
}
impl AstRootDetail {
    pub fn is_node(&self) -> bool {
        matches!(self, Self::Node)
    }
}

#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum AstRootEntryDetail {
    Node,
    PathHash,
    Trivia,
}
impl AstRootEntryDetail {
    pub fn is_node(&self) -> bool {
        matches!(self, Self::Node)
    }
}

#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum AstObjectDetail {
    Node,
    ClassHash,
    Trivia,
}
impl AstObjectDetail {
    pub fn is_node(&self) -> bool {
        matches!(self, Self::Node)
    }
}

#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum AstPropertyDetail {
    Node,
    Name,
    TypeExpr,
    Trivia,
}
impl AstPropertyDetail {
    pub fn is_node(&self) -> bool {
        matches!(self, Self::Node)
    }
}

#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub enum NodeDetail {
    Root(AstRootDetail),
    Object(AstRootEntryDetail),
    Struct(AstObjectDetail),
    Property(AstPropertyDetail),
    Value,
}
impl NodeDetail {
    pub fn is_node(&self) -> bool {
        match self {
            NodeDetail::Root(d) => d.is_node(),
            NodeDetail::Object(d) => d.is_node(),
            NodeDetail::Struct(d) => d.is_node(),
            NodeDetail::Property(d) => d.is_node(),
            NodeDetail::Value => true,
        }
    }
}

impl From<AstRootDetail> for NodeDetail {
    fn from(value: AstRootDetail) -> Self {
        Self::Root(value)
    }
}
impl From<AstRootEntryDetail> for NodeDetail {
    fn from(value: AstRootEntryDetail) -> Self {
        Self::Object(value)
    }
}
impl From<AstObjectDetail> for NodeDetail {
    fn from(value: AstObjectDetail) -> Self {
        Self::Struct(value)
    }
}
impl From<AstPropertyDetail> for NodeDetail {
    fn from(value: AstPropertyDetail) -> Self {
        Self::Property(value)
    }
}