pub use cha_plugin_sdk_macros::plugin;
#[cfg(feature = "test-utils")]
mod test_utils_impl;
#[cfg(feature = "test-utils")]
pub use test_utils_impl::test_utils;
#[macro_export]
macro_rules! option_str {
($options:expr, $key:expr) => {
$options.iter().find_map(|(k, v)| match v {
OptionValue::Str(s) if k == $key => Some(s.as_str()),
_ => None,
})
};
}
#[macro_export]
macro_rules! option_int {
($options:expr, $key:expr) => {
$options.iter().find_map(|(k, v)| match v {
OptionValue::Int(n) if k == $key => Some(*n),
_ => None,
})
};
}
#[macro_export]
macro_rules! option_float {
($options:expr, $key:expr) => {
$options.iter().find_map(|(k, v)| match v {
OptionValue::Float(n) if k == $key => Some(*n),
_ => None,
})
};
}
#[macro_export]
macro_rules! option_bool {
($options:expr, $key:expr) => {
$options.iter().find_map(|(k, v)| match v {
OptionValue::Boolean(b) if k == $key => Some(*b),
_ => None,
})
};
}
#[macro_export]
macro_rules! option_list_str {
($options:expr, $key:expr) => {
$options.iter().find_map(|(k, v)| match v {
OptionValue::ListStr(l) if k == $key => Some(l.as_slice()),
_ => None,
})
};
}
#[macro_export]
macro_rules! str_options {
($options:expr) => {
$options.iter().filter_map(|(k, v)| match v {
OptionValue::Str(s) => Some((k.as_str(), s.as_str())),
_ => None,
})
};
}