nautilus_codegen/
enum_gen.rs1use nautilus_schema::ir::EnumIr;
4use std::collections::HashMap;
5use tera::Context;
6
7use crate::generator::TEMPLATES;
8
9pub fn generate_enum(enum_ir: &EnumIr) -> String {
11 let mut context = Context::new();
12 context.insert("enum_name", &enum_ir.logical_name);
13 context.insert("variants", &enum_ir.variants);
14
15 TEMPLATES
16 .render("enum.tera", &context)
17 .unwrap_or_else(|e| panic!("template rendering failed for enum: {:?}", e))
18}
19
20pub fn generate_all_enums(enums: &HashMap<String, EnumIr>) -> String {
22 let mut output = String::new();
23
24 output.push_str("//! Generated enum types.\n\n");
25
26 for enum_ir in enums.values() {
27 output.push_str(&generate_enum(enum_ir));
28 output.push('\n');
29 }
30
31 output
32}