shex_ast/ir/
value_set.rs

1use srdf::Object;
2use std::fmt::Display;
3
4use super::value_set_value::ValueSetValue;
5
6#[derive(Clone, Debug, Default)]
7pub struct ValueSet {
8    values: Vec<ValueSetValue>,
9}
10
11impl ValueSet {
12    pub fn new() -> Self {
13        Self::default()
14    }
15
16    pub fn add_value(&mut self, v: ValueSetValue) {
17        self.values.push(v);
18    }
19
20    pub fn check_value(&self, object: &Object) -> bool {
21        self.values.iter().any(|vsv| vsv.match_value(object))
22    }
23}
24
25impl Display for ValueSet {
26    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
27        write!(f, "[")?;
28        for v in &self.values {
29            write!(f, "{v} ")?;
30        }
31        write!(f, "]")?;
32        Ok(())
33    }
34}