schemaorg 0.1.0

codegen from schemaorg
Documentation
mod class;
mod enum_member;
mod enumeration;
mod property;
pub use class::*;
pub use enum_member::*;
pub use enumeration::*;
pub use property::*;

pub enum Type {
    Class(Class),
    Enum(Enumeration),
    DataType(DataType),
}
pub enum DataType {
    Boolean,
    Integer,
    Date,
    DateTime,
    Number,
    Text,
    Time,
    CssSelectorType,
    PronounceableText,
    URL,
    XPathType,
    Float,
    DataType,
}

impl DataType {
    pub fn range_include(&self) -> Option<Vec<DataType>> {
        match self {
            DataType::Number => Some(vec![DataType::Integer, DataType::Float]),
            DataType::DataType => Some(vec![
                DataType::Boolean,
                DataType::Integer,
                DataType::Date,
                DataType::DateTime,
                DataType::Number,
                DataType::Text,
                DataType::Time,
                DataType::CssSelectorType,
                DataType::PronounceableText,
                DataType::URL,
                DataType::XPathType,
                DataType::Float,
            ]),
            DataType::Text => Some(vec![
                DataType::CssSelectorType,
                DataType::PronounceableText,
                DataType::URL,
                DataType::XPathType,
            ]),
            DataType::Boolean
            | DataType::Integer
            | DataType::Date
            | DataType::DateTime
            | DataType::Time
            | DataType::CssSelectorType
            | DataType::PronounceableText
            | DataType::URL
            | DataType::XPathType
            | DataType::Float => None,
        }
    }
}
pub trait HasChild {
    fn has_child(&self) -> bool;
}
impl HasChild for DataType {
    fn has_child(&self) -> bool {
        match self {
            DataType::Number | DataType::DataType | DataType::Text => true,
            DataType::Boolean
            | DataType::Integer
            | DataType::Date
            | DataType::DateTime
            | DataType::Time
            | DataType::CssSelectorType
            | DataType::PronounceableText
            | DataType::URL
            | DataType::XPathType
            | DataType::Float => false,
        }
    }
}