xsd_parser/models/data/
mod.rs1mod build_in;
12mod complex;
13mod constrains;
14mod custom;
15mod dynamic;
16mod enumeration;
17mod occurs;
18mod path_data;
19mod reference;
20mod simple;
21mod tag_name;
22mod type_;
23mod types;
24mod union;
25
26use std::ops::Bound;
27
28use crate::models::meta::Constrains;
29
30pub use self::build_in::BuildInData;
31pub use self::complex::{
32 ComplexBase, ComplexData, ComplexDataAttribute, ComplexDataContent, ComplexDataElement,
33 ComplexDataElementOrigin, ComplexDataEnum, ComplexDataStruct, ComplexFlags, StructMode,
34};
35pub use self::constrains::ConstrainsData;
36pub use self::custom::CustomData;
37pub use self::dynamic::{DerivedType, DynamicData};
38pub use self::enumeration::{EnumerationData, EnumerationTypeVariant};
39pub use self::occurs::Occurs;
40pub use self::path_data::PathData;
41pub use self::reference::ReferenceData;
42pub use self::simple::SimpleData;
43pub use self::tag_name::TagName;
44pub use self::type_::{DataType, DataTypeVariant};
45pub use self::types::DataTypes;
46pub use self::union::{UnionData, UnionTypeVariant};
47
48#[derive(Default, Debug)]
54pub enum ConfigValue<T> {
55 #[default]
57 Default,
58
59 Extend(T),
61
62 Overwrite(T),
64}
65
66impl Constrains {
67 #[must_use]
69 pub fn need_value_validation(&self) -> bool {
70 self.range.start != Bound::Unbounded
71 || self.range.end != Bound::Unbounded
72 || self.min_length.is_some()
73 || self.max_length.is_some()
74 }
75
76 #[must_use]
78 pub fn need_string_validation(&self) -> bool {
79 !self.patterns.is_empty() || self.total_digits.is_some() || self.fraction_digits.is_some()
80 }
81}