diff options
| author | pml68 <contact@pml68.me> | 2024-09-03 08:29:54 +0200 |
|---|---|---|
| committer | pml68 <contact@pml68.me> | 2024-09-22 23:55:11 +0200 |
| commit | a2dc182cec0db1c6035a47cc17a853fa29ae53ab (patch) | |
| tree | fcc760a7d71209a35832cb4a290bd1443c9a03fd /src/codegen | |
| parent | feat: start codegen (diff) | |
| download | iced-builder-a2dc182cec0db1c6035a47cc17a853fa29ae53ab.tar.gz | |
feat: format children nodes into code (without props)
Diffstat (limited to '')
| -rw-r--r-- | src/codegen/mod.rs | 27 |
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};"); } + _ => {} } } } |
