shapes_converter/shex_to_uml/
uml_class.rs

1use std::collections::HashSet;
2
3use super::{Name, NodeId, UmlEntry};
4
5#[derive(Debug, PartialEq)]
6
7pub struct UmlClass {
8    name: Name,
9    entries: Vec<UmlEntry>,
10    extends: HashSet<NodeId>,
11}
12
13impl UmlClass {
14    pub fn new(name: Name) -> UmlClass {
15        UmlClass {
16            name,
17            entries: Vec::new(),
18            extends: HashSet::new(),
19        }
20    }
21
22    pub fn add_entry(&mut self, entry: UmlEntry) {
23        self.entries.push(entry)
24    }
25
26    pub fn add_extends(&mut self, node: &NodeId) {
27        self.extends.insert(*node);
28    }
29
30    pub fn name(&self) -> String {
31        self.name.name()
32    }
33
34    pub fn label(&self) -> Option<String> {
35        self.name.label()
36    }
37
38    pub fn href(&self) -> Option<String> {
39        self.name.href()
40    }
41
42    pub fn entries(&self) -> impl Iterator<Item = &UmlEntry> {
43        self.entries.iter()
44    }
45}