shex_ast/ast/
sem_act.rs

1use prefixmap::{Deref, DerefError, IriRef};
2use serde::{Deserialize, Serialize};
3
4#[derive(Deserialize, Serialize, Debug, PartialEq, Clone)]
5pub struct SemAct {
6    name: IriRef,
7
8    #[serde(default, skip_serializing_if = "Option::is_none")]
9    code: Option<String>,
10}
11
12impl SemAct {
13    pub fn new(name: IriRef, code: Option<String>) -> SemAct {
14        SemAct { name, code }
15    }
16
17    pub fn name(&self) -> IriRef {
18        self.name.clone()
19    }
20
21    pub fn code(&self) -> Option<String> {
22        self.code.clone()
23    }
24}
25
26impl Deref for SemAct {
27    fn deref(
28        &self,
29        base: &Option<iri_s::IriS>,
30        prefixmap: &Option<prefixmap::PrefixMap>,
31    ) -> Result<Self, DerefError> {
32        let new_name = self.name.deref(base, prefixmap)?;
33        Ok(SemAct {
34            name: new_name,
35            code: self.code.clone(),
36        })
37    }
38}