summaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/mod.rs27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index 37ada3a..8e31dc3 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -4,12 +4,35 @@ impl RenderedElement {
pub fn codegen(&self) -> Result<(String, String), &str> {
let mut imports = String::new();
let mut view = String::new();
+ let mut props = String::new();
+
+ let mut elements = String::new();
+
+ match self.children {
+ Some(els) => {
+ for el in els {
+ let mut children = String::new();
+
+ match el.codegen() {
+ Ok(e) => (children, imports) = e,
+ Err(err) => return Err(err),
+ }
+ elements = format!("{elements},{}", children);
+ }
+ }
+ None => {}
+ }
match self.name {
ElementName::Row => {
- imports = format!("{imports}\nuse iced::widget::row");
- view = format!("{view}\nrow![]");
+ imports = format!("{imports}\nuse iced::widget::row;");
+ view = format!("{view}\nrow![{elements}]{props};");
+ }
+ ElementName::Container => {
+ imports = format!("{imports}\nuse iced::widget::container;");
+ view = format!("{view}\ncontainer({elements}){props};");
}
+ _ => {}
}
}
}