From: Andrea Zagli <azagli@libero.it>
Date: Fri, 10 May 2024 07:12:10 +0000 (+0200)
Subject: c2rs: added form struct.
X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=a0ab8e0b6d7929b58648f5e6a47f1bc62a3cf536;p=rust%2Fzakform

c2rs: added form struct.
---

diff --git a/src/bin/c2rs.rs b/src/bin/c2rs.rs
index 084f727..9ce1c2f 100644
--- a/src/bin/c2rs.rs
+++ b/src/bin/c2rs.rs
@@ -158,6 +158,9 @@ fn main() {
 
 	println!("{:?}", form);
 
+	writeln!(output, "use serde::{{Serialize, Deserialize}};");
+	writeln!(output, "");
+
 	writeln!(output, "use zakform::fields::{{TField, FOption}};");
 	writeln!(output, "");
 
@@ -166,9 +169,17 @@ fn main() {
 
 	writeln!(output, "let mut f = zakform::form::Form::new();");
 
+	let mut struct_form = String::new();
+
 	for e in form.elements {
 		writeln!(output, "");
 
+		if e.etype.as_str() == "zak_form_cgi_form_element_submit" {
+			struct_form.push_str(&format!("pub {}: Option<String>,\n", e.id));
+		} else {
+			struct_form.push_str(&format!("pub {}: String,\n", e.id));
+		}
+
 		match e.etype.as_str() {
 			"zak_form_cgi_form_element_text"
 				| "zak_form_cgi_form_element_email" => { writeln!(output, r#"let mut fi = zakform::fields::FieldText::new("{}");"#, e.id); },
@@ -314,4 +325,11 @@ fn main() {
 	writeln!(output, "");
 	writeln!(output, "f");
 	writeln!(output, "}}");
+
+	/* form struct */
+	writeln!(output, "");
+	writeln!(output, "#[derive(Debug, Serialize, Deserialize)]");
+	writeln!(output, "pub struct DomandaForm {{");
+	writeln!(output, "{}}}", struct_form);
+
 }