#[macro_export]
macro_rules! value {
({}) => {
$crate::Value::Map($crate::value::map::ValueMap::new())
};
() => {
$crate::Value::Map($crate::value::map::ValueMap::new())
};
{$($k:tt: $v:tt),* $(,)*} => {
{
let mut map = $crate::value::map::ValueMap::new();
$(
$crate::value!(@map_entry map $k $v);
)*
$crate::Value::Map(map)
}
};
({$($k:tt: $v:tt),* $(,)*}) => {
{
let mut map = $crate::value::map::ValueMap::new();
$(
$crate::value!(@map_entry map $k $v);
)*
$crate::Value::Map(map)
}
};
($($k:tt: $v:expr),* $(,)?) => {
{
let mut map = $crate::value::map::ValueMap::new();
$(
map.insert($crate::value!($k), $crate::value!($v));
)*
$crate::Value::Map(map)
}
};
(@map_entry $map:ident $k:tt {$($ik:tt: $iv:tt),* $(,)*}) => {
let inner_map = $crate::value!({$($ik: $iv),*});
$map.insert($crate::value!($k), inner_map);
};
(@map_entry $map:ident $k:tt $v:tt) => {
$map.insert($crate::value!($k), $crate::value!($v));
};
($arg:expr) => {
$crate::value($arg).unwrap_or_default()
};
[$($v:expr),* $(,)*] => {
{
$crate::value(vec![$($crate::value($v).unwrap_or_default()),*]).unwrap_or_default()
}
};
}
#[deprecated(note = "please use value!")]
#[macro_export]
macro_rules! to_value {
({}) => {
$crate::Value::Map($crate::value::map::ValueMap::new())
};
() => {
$crate::Value::Map($crate::value::map::ValueMap::new())
};
{$($k:tt: $v:tt),* $(,)*} => {
{
let mut map = $crate::value::map::ValueMap::new();
$(
$crate::value!(@map_entry map $k $v);
)*
$crate::Value::Map(map)
}
};
({$($k:tt: $v:tt),* $(,)*}) => {
{
let mut map = $crate::value::map::ValueMap::new();
$(
$crate::value!(@map_entry map $k $v);
)*
$crate::Value::Map(map)
}
};
($($k:tt: $v:expr),* $(,)?) => {
{
let mut map = $crate::value::map::ValueMap::new();
$(
map.insert($crate::value!($k), $crate::value!($v));
)*
$crate::Value::Map(map)
}
};
(@map_entry $map:ident $k:tt {$($ik:tt: $iv:tt),* $(,)*}) => {
let inner_map = $crate::value!({$($ik: $iv),*});
$map.insert($crate::value!($k), inner_map);
};
(@map_entry $map:ident $k:tt $v:tt) => {
$map.insert($crate::value!($k), $crate::value!($v));
};
($arg:expr) => {
$crate::value($arg).unwrap_or_default()
};
[$($v:expr),* $(,)*] => {
{
$crate::value(vec![$($crate::value($v).unwrap_or_default()),*]).unwrap_or_default()
}
};
}