#[derive(Default, Debug, Clone, Eq, PartialEq)]
pub struct Namespaces
{
defaultNamespace: Option<NamespaceUrl>,
namespaces: HashMap<NamespacePrefix, NamespaceUrl>,
}
impl Namespaces
{
#[inline(always)]
pub fn default_namespace(&self) -> Option<NamespaceUrl>
{
self.defaultNamespace.as_ref().map(|reference| reference.clone())
}
#[inline(always)]
pub fn namespace_for_prefix(&self, prefix: &NamespacePrefix) -> Option<NamespaceUrl>
{
self.namespaces.get(prefix).map(|reference| reference.clone())
}
#[inline(always)]
pub(crate) fn empty() -> Rc<Self>
{
Rc::new(Self::default())
}
#[inline(always)]
pub(crate) fn update(&mut self, prefix: Option<&NamespacePrefix>, url: &NamespaceUrl)
{
match prefix
{
None => self.defaultNamespace = Some(url.clone()),
Some(prefix) =>
{
self.namespaces.insert(prefix.clone(), url.clone());
},
}
}
}