mod build_in;
mod complex;
mod constrains;
mod custom;
mod dynamic;
mod enumeration;
mod occurs;
mod path_data;
mod reference;
mod simple;
mod tag_name;
mod type_;
mod types;
mod union;
use std::ops::Bound;
use crate::models::meta::Constrains;
pub use self::build_in::BuildInData;
pub use self::complex::{
ComplexBase, ComplexData, ComplexDataAttribute, ComplexDataContent, ComplexDataElement,
ComplexDataElementOrigin, ComplexDataEnum, ComplexDataStruct, ComplexFlags, StructMode,
};
pub use self::constrains::ConstrainsData;
pub use self::custom::CustomData;
pub use self::dynamic::{DerivedType, DynamicData};
pub use self::enumeration::{EnumerationData, EnumerationDataVariant, EnumerationVariantValue};
pub use self::occurs::Occurs;
pub use self::path_data::PathData;
pub use self::reference::ReferenceData;
pub use self::simple::SimpleData;
pub use self::tag_name::TagName;
pub use self::type_::{DataType, DataTypeVariant};
pub use self::types::DataTypes;
pub use self::union::{UnionData, UnionTypeVariant};
#[derive(Default, Debug)]
pub enum ConfigValue<T> {
#[default]
Default,
Extend(T),
Overwrite(T),
}
impl Constrains {
#[must_use]
pub fn need_value_validation(&self) -> bool {
self.range.start != Bound::Unbounded
|| self.range.end != Bound::Unbounded
|| self.min_length.is_some()
|| self.max_length.is_some()
}
#[must_use]
pub fn need_string_validation(&self) -> bool {
!self.patterns.is_empty() || self.total_digits.is_some() || self.fraction_digits.is_some()
}
}