diff --git a/src/main.rs b/src/main.rs index 7102b02..d5da8d3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,10 +12,6 @@ pub fn app() -> Element { let count = use_state(0); rsx! { - if (count == 0) { - "ok" - } - "{count}" } } diff --git a/src/rsx.rs b/src/rsx.rs index ec783a1..40ac190 100644 --- a/src/rsx.rs +++ b/src/rsx.rs @@ -25,9 +25,23 @@ macro_rules! rsx_inner { // If statement ($frame:expr, $event:expr; - if $(%$s:ident),* ($e:expr) {$($inner:tt)*} + if ($e:expr) {$($inner:tt)*} + $(else if ($ee:expr) {$($elif_inner:tt)*})* + else {$($else_inner:tt)*} + $($rest:tt)*) => { + if $e { + $crate::rsx_inner!($frame, $event; $($inner)*); + } $(else if $ee { + $crate::rsx_inner!($frame, $event; $($elif_inner)*); + })* else { + $crate::rsx_inner!($frame, $event; $($else_inner)*); + } + $crate::rsx_inner!($frame, $event; $($rest)*); + }; + + ($frame:expr, $event:expr; + if ($e:expr) {$($inner:tt)*} $($rest:tt)*) => { - $(let $s = $s.copy_state();)* if $e { $crate::rsx_inner!($frame, $event; $($inner)*); } @@ -62,13 +76,6 @@ macro_rules! rsx_inner { $crate::rsx_inner!($frame, $event; $($rest)*); }; - ($frame:expr, $event:expr; - $elem:literal - $($rest:tt)*) => { - $frame.draw(&format!($elem), Area::new())?; - $crate::rsx_inner!($frame, $event; $($rest)*); - }; - ($frame:expr, $event:expr;) => {}; }