summaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/codegen/mod.rs40
1 files changed, 21 insertions, 19 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index 8e31dc3..5ce8425 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -1,38 +1,40 @@
-use crate::types::{ElementName, RenderedElement};
+use crate::types::{props::Props, rendered_element::RenderedElement, ElementName};
impl RenderedElement {
- pub fn codegen(&self) -> Result<(String, String), &str> {
+ pub fn codegen(&self) -> (String, String) {
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();
+ for element in &self.child_elements {
+ let mut children = String::new();
- match el.codegen() {
- Ok(e) => (children, imports) = e,
- Err(err) => return Err(err),
- }
- elements = format!("{elements},{}", children);
- }
- }
- None => {}
+ (imports, children) = element.codegen();
+ elements = format!("{elements}{},", children);
}
- match self.name {
+ match &self.name {
+ ElementName::Container => {
+ imports = format!("{imports}\nuse iced::widget::container;");
+ view = if self.child_elements.len() < 2 {
+ format!("{view}\ncontainer({elements}){props}")
+ } else {
+ format!("{view}\ncontainer(){props}")
+ };
+ }
ElementName::Row => {
imports = format!("{imports}\nuse iced::widget::row;");
- view = format!("{view}\nrow![{elements}]{props};");
+ view = format!("{view}\nrow![{elements}]{props}");
}
- ElementName::Container => {
- imports = format!("{imports}\nuse iced::widget::container;");
- view = format!("{view}\ncontainer({elements}){props};");
+ ElementName::Text(string) => {
+ imports = format!("{imports}\nuse iced::widget::text;");
+ view = format!("{view}\ntext(\"{string}\"){props}");
}
_ => {}
}
+
+ (imports, view)
}
}