#[macro_export]
macro_rules! namespace {
($iri_prefix:expr, $($suffix:ident),*; $($r_id:ident, $r_sf:expr),*) => {
pub static PREFIX: $crate::ns::IriRef<&'static str> = $crate::ns::IriRef::new_unchecked_const($iri_prefix);
$(
$crate::ns_iri!(PREFIX, $suffix);
)*
$(
$crate::ns_iri!(PREFIX, $r_id, $r_sf);
)*
#[cfg(test)]
mod test_valid_iri {
$(
#[allow(non_snake_case)]
#[test]
fn $suffix() {
let iri = $crate::ns::NsTerm::new_unchecked(
super::PREFIX,
stringify!($suffix),
);
assert!($crate::ns::IriRef::new(iri.to_string()).is_ok());
}
)*
$(
#[allow(non_snake_case)]
#[test]
fn $r_id() {
let iri = $crate::ns::NsTerm::new_unchecked(
super::PREFIX,
$r_sf,
);
assert!($crate::ns::IriRef::new(iri.to_string()).is_ok());
}
)*
}
};
($iri_prefix:expr, $($suffix:ident),*) => {
namespace!($iri_prefix, $($suffix),*;);
};
}
#[macro_export]
macro_rules! ns_iri {
($prefix:expr, $ident:ident) => {
$crate::ns_iri!($prefix, $ident, stringify!($ident));
};
($prefix:expr, $ident:ident, $suffix:expr) => {
#[allow(non_upper_case_globals)]
pub static $ident: $crate::ns::NsTerm = $crate::ns::NsTerm::new_unchecked($prefix, $suffix);
};
}