schema2000 0.1.0

Schema2000 is a crate derive a JSON schema from given JSON objects
Documentation
use crate::model::any::AnyNode;
use crate::model::array::ArrayNode;
use crate::model::integer::IntegerNode;
use crate::model::number::NumberNode;
use crate::model::object::ObjectNode;
use crate::model::string::StringNode;

#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub enum NodeType {
    Any(AnyNode),
    Array(ArrayNode),
    Boolean,
    Integer(IntegerNode),
    Null,
    Number(NumberNode),
    Object(ObjectNode),
    String(StringNode),
}

impl NodeType {
    #[must_use]
    pub fn is_object(&self) -> bool {
        matches!(self, NodeType::Object { .. })
    }

    #[must_use]
    pub fn is_array(&self) -> bool {
        matches!(self, NodeType::Array(_))
    }
}

impl From<StringNode> for NodeType {
    fn from(s: StringNode) -> Self {
        NodeType::String(s)
    }
}

impl From<IntegerNode> for NodeType {
    fn from(i: IntegerNode) -> Self {
        NodeType::Integer(i)
    }
}

impl From<NumberNode> for NodeType {
    fn from(n: NumberNode) -> Self {
        NodeType::Number(n)
    }
}

impl From<ArrayNode> for NodeType {
    fn from(a: ArrayNode) -> Self {
        NodeType::Array(a)
    }
}

impl From<ObjectNode> for NodeType {
    fn from(o: ObjectNode) -> Self {
        NodeType::Object(o)
    }
}
impl From<AnyNode> for NodeType {
    fn from(a: AnyNode) -> Self {
        NodeType::Any(a)
    }
}