shapes_converter/shex_to_sparql/
var.rs1use 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}