shapes_converter/shex_to_sparql/
var.rs

1use std::fmt::Display;
2
3use iri_s::IriS;
4
5#[derive(Debug, PartialEq, Clone)]
6pub struct Var {
7    name: String,
8}
9
10impl Var {
11    pub fn new(name: &str) -> Var {
12        Var {
13            name: name.to_string(),
14        }
15    }
16
17    pub fn new_from_iri(_iri: &IriS, var_builder: &mut VarBuilder) -> Var {
18        var_builder.generate()
19    }
20}
21
22impl Display for Var {
23    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
24        write!(f, "?{}", self.name)
25    }
26}
27
28pub struct VarBuilder {
29    counter: usize,
30    pattern: String,
31}
32
33impl VarBuilder {
34    pub fn new() -> VarBuilder {
35        VarBuilder {
36            counter: 0,
37            pattern: "var".to_string(),
38        }
39    }
40
41    pub fn generate(&mut self) -> Var {
42        self.counter += 1;
43        let name = format!("{}{}", self.pattern, self.counter);
44        Var::new(name.as_str())
45    }
46}
47
48impl Default for VarBuilder {
49    fn default() -> Self {
50        Self::new()
51    }
52}