#[macro_export]
macro_rules! extract_msg {
(
{
{
{
if
($($predicate:tt)*)
{ $($e:tt)* }
$($rest:tt)*
}
[$($expanded:tt)*]
}
}
) => {
extract_msg! {{
{
{
$($rest)*
$($e)*
}
[$($expanded)*
]
}
}}
};
(
{
{
{
for
$($predicate:ident),+ in ($($iter:tt)*)
{ $($e:tt)* }
$($rest:tt)*
}
[$($expanded:tt)*]
}
}
) => {
extract_msg! {{
{
{
$($rest)*
$($e)*
}
[$($expanded)*
]
}
}}
};
(
{
{
{
$tag:ident $(#$id_name:ident)? $(.$class_name:ident)*
$([$($attr_name:ident : {$($attr_value:tt)*} ),*])?
$($(@$ev:ident : {$($evcode:tt)*} ),+ )?
$(={ $($binding:tt)* })?
{ $($e:tt)* }
$($rest:tt)*
}
[$($expanded:tt)*]
}
}
) => {
extract_msg! {{
{
{
$($rest)*
$($e)*
}
[$($expanded)*
$($({
$($evcode)*
})+)?
]
}
}}
};
(
{
{
{
@{$($comp:tt)+}
$($rest:tt)*
}
[$($expanded:tt)*]
}
}
) => {
extract_msg! {{
{
{
$($rest)*
}
[$($expanded)*]
}
}}
};
(
{
{
{
{ $($code:tt)+ }
$($rest:tt)*
}
[$($expanded:tt)*]
}
}
) => {
extract_msg! {{
{
{
$($rest)*
}
[$($expanded)*]
}
}}
};
() => {
vec![]
};
(
{
{
{}
[$({$($name:tt)*})*]
}
}
) => {
comet_macro_procs::generate_msg! {
[$(
$($name)*
),*]
}
};
(
$( $e:tt )*
) => {
extract_msg! {{
{
{
$( $e )*
}
[]
}
}}
};
}