From 739a5ea72ac4cb22a8425004ee74a3153323fa4c Mon Sep 17 00:00:00 2001 From: Leo dev Date: Wed, 6 Nov 2024 23:04:51 +0100 Subject: [PATCH] added for loops --- src/macros.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/macros.rs b/src/macros.rs index 4f997ce..06e6755 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -116,11 +116,18 @@ macro_rules! command { /// /// # Parameters /// - `elem`: The element being updated. -/// - Various key-value pairs, child elements, and text content. +/// - Various key-value pairs, child elements, and text content. even for loops #[macro_export] macro_rules! parse_rsx_param { ($elem:expr, ) => {}; + ($elem:expr, for ($item:ident in $expr:expr) {$($inner:tt)*} $($rest:tt)*) => { + for $item in $expr { + $elem.children.push({$($inner)*}) + } + osui::parse_rsx_param!($elem, $($rest)*); + }; + ($elem:expr, $($k:ident: $v:expr),*) => { $( $elem.$k = $v; @@ -167,6 +174,16 @@ macro_rules! parse_rsx_param { /// } /// } /// ``` +/// +/// # For loops +/// ``` +/// rsx! { +/// text { "Welcome!" } +/// for (i in 1..5) { // must be contained with () +/// rsx_elem!{text { y: i, "Text: {i}" }} +/// } +/// } +/// ``` /// /// This macro provides a clean way to express OSUI elements, functioning like a div that can /// contain multiple components.