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}