diff --git a/hemx-build/src/lib.rs b/hemx-build/src/lib.rs index 00eceef..bc5cf90 100644 --- a/hemx-build/src/lib.rs +++ b/hemx-build/src/lib.rs @@ -1260,13 +1260,16 @@ fn __hemx_attr(tag: &str, attr: &str) -> Option<::std::string::String> { out.push_str(&format!("handle_form\t{handle_ident}\t{form_ident}\n")); } for form in self.forms.values() { + let mut fields = BTreeMap::<&str, (bool, bool)>::new(); for control in &form.controls { + let field = fields.entry(&control.name).or_default(); + field.0 |= control.required; + field.1 |= form_control_is_multiple(&control.kind); + } + for (name, (required, multiple)) in fields { out.push_str(&format!( - "form_field\t{}\t{}\t{}\t{}\n", - form.resource.ident, - control.name, - control.required, - form_control_is_multiple(&control.kind) + "form_field\t{}\t{name}\t{required}\t{multiple}\n", + form.resource.ident )); } } @@ -2594,6 +2597,7 @@ mod tests { r#"