#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SchemaVersion {
Ifc2x3,
Ifc4,
Ifc4x3,
}
impl SchemaVersion {
pub fn from_header_token(token: &str) -> Option<Self> {
match token.trim().to_ascii_uppercase().as_str() {
"IFC2X3" => Some(Self::Ifc2x3),
"IFC4" => Some(Self::Ifc4),
"IFC4X3" | "IFC4X3_ADD2" => Some(Self::Ifc4x3),
_ => None,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn recognizes_the_schema_tokens_our_fixtures_carry() {
assert_eq!(
SchemaVersion::from_header_token("IFC4"),
Some(SchemaVersion::Ifc4)
);
assert_eq!(
SchemaVersion::from_header_token("ifc2x3"),
Some(SchemaVersion::Ifc2x3)
);
assert_eq!(SchemaVersion::from_header_token("STEP"), None);
}
}