shex_ast/compiled/
value_set_value.rsuse super::object_value::ObjectValue;
use iri_s::IriS;
use srdf::Object;
use std::fmt::Display;
#[derive(Debug, PartialEq, Eq, Clone)]
pub enum ValueSetValue {
IriStem {
stem: IriS,
},
IriStemRange {
stem: IriRefOrWildcard,
exclusions: Option<Vec<StringOrIriStem>>,
},
LiteralStem {
stem: String,
},
LiteralStemRange {
stem: StringOrWildcard,
exclusions: Option<Vec<StringOrLiteralStem>>,
},
Language {
language_tag: String,
},
LanguageStem,
LanguageStemRange,
ObjectValue(ObjectValue),
}
#[derive(PartialEq, Eq, Clone, Debug)]
pub enum StringOrLiteralStem {
String(String),
LiteralStem { stem: String },
}
#[derive(PartialEq, Eq, Clone, Debug)]
pub enum IriRefOrWildcard {
IriRef(IriS),
Wildcard { type_: String },
}
#[derive(PartialEq, Eq, Clone, Debug)]
pub enum StringOrWildcard {
String(String),
Wildcard { type_: String },
}
#[derive(PartialEq, Eq, Clone, Debug)]
pub enum StringOrIriStem {
String(String),
IriStem { stem: String },
}
impl ValueSetValue {
pub fn match_value(&self, object: &Object) -> bool {
match self {
ValueSetValue::IriStem { .. } => todo!(),
ValueSetValue::IriStemRange { .. } => todo!(),
ValueSetValue::LiteralStem { .. } => todo!(),
ValueSetValue::LiteralStemRange { .. } => todo!(),
ValueSetValue::Language { .. } => todo!(),
ValueSetValue::LanguageStem => todo!(),
ValueSetValue::LanguageStemRange => todo!(),
ValueSetValue::ObjectValue(v) => v.match_value(object),
}
}
}
impl Display for ValueSetValue {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
ValueSetValue::IriStem { .. } => todo!(),
ValueSetValue::IriStemRange { .. } => todo!(),
ValueSetValue::LiteralStem { .. } => todo!(),
ValueSetValue::LiteralStemRange { .. } => todo!(),
ValueSetValue::Language { .. } => todo!(),
ValueSetValue::LanguageStem => todo!(),
ValueSetValue::LanguageStemRange => todo!(),
ValueSetValue::ObjectValue(ov) => write!(f, "{ov}"),
}
}
}