some minor updates

This commit is contained in:
2024-11-30 06:46:48 +01:00
parent 69d2943bb3
commit f10e216d9c
6 changed files with 38 additions and 126 deletions
+28 -15
View File
@@ -1,4 +1,16 @@
#[macro_export]
macro_rules! check_expr {
(|| $code:block) => {
$crate::Handler::new(move |_, _, _| $code)
};
(|$($inner:tt)*| $code:block) => {
$crate::Handler::new(move |$($inner)*| $code)
};
($expr:expr) => {
$expr
};
}
#[macro_export]
macro_rules! parse_rsx_param {
($elem:expr, for ($($for:tt)*) $code:block $($rest:tt)*) => {
if $elem.children.is_none() {$elem.children = $crate::Children::Children(Vec::new(), 0)}
@@ -10,33 +22,33 @@ macro_rules! parse_rsx_param {
osui::parse_rsx_param!($elem, $($rest)*);
};
($elem:expr, $($k:ident).+: $v:expr) => {
$elem.$($k).+ = $v;
($elem:expr, $($k:ident).+: fn($($params:tt)*) $code:block $(, $($rest:tt)*)?) => {
$elem.$($k).+ = $crate::Handler::new(|$($params)*| $code);
osui::parse_rsx_param!($elem, $($($rest)*)?);
};
($elem:expr, $($k:ident).+: $v:expr, $($rest:tt)*) => {
$elem.$($k).+ = $v;
osui::parse_rsx_param!($elem, $($rest)*);
($elem:expr, $($k:ident).+: $v:expr $(, $($rest:tt)*)?) => {
$elem.$($k).+ = $crate::check_expr!($v);
osui::parse_rsx_param!($elem, $($($rest)*)?);
};
($elem:expr, $p:path) => {
($elem:expr, $p:path) => {
$p;
};
($elem:expr, $($k:ident).+, $($rest:tt)*) => {
$elem.$($k).+;
$elem.$($k).+ = true;
osui::parse_rsx_param!($elem, $($rest)*);
};
($elem:expr, $($k:ident).+., $($rest:tt)*) => {
$elem.$($k).
+.;
$elem.$($k).+.;
osui::parse_rsx_param!($elem, $($rest)*);
};
($elem:expr, $($k:ident).+.: $v:expr) => {
$elem.$($k).+. = $v;
$elem.$($k).+. = $crate::check_expr!($v);
};
($elem:expr, $($k:ident).+.: $v:expr, $($rest:tt)*) => {
$elem.$($k).+. = $v;
osui::parse_rsx_param!($elem, $($rest)*);
($elem:expr, $($k:ident).+.: $v:expr, $(, $($rest:tt)*)?) => {
$elem.$($k).+. = $crate::check_expr!($v);
osui::parse_rsx_param!($elem, $($($rest)*)?);
};
($elem:expr, $code:block $($rest:tt)*) => {
@@ -64,14 +76,15 @@ macro_rules! parse_rsx_param {
};
($elem:expr, $text:expr) => {
if $elem.children.is_none() {$elem.children = $crate::Children::Text(format!($text))}
$elem.children.set_text_force(&format!($text))
};
($elem:expr, $text:expr, $($inner:tt)*) => {
if $elem.children.is_none() {$elem.children = $crate::Children::Text(format!($text, $($inner)*))}
$elem.children.set_text_force(&format!($text, $($inner)*))
};
($elem:expr, ) => {};
($elem:expr) => {};
}
#[macro_export]