pub mod python;
pub mod rust;
pub mod typescript;
use crate::ir::{CodeGenRequest, CodeGenResponse};
pub trait Generator {
fn generate(&self, request: &CodeGenRequest) -> CodeGenResponse;
fn name(&self) -> &'static str;
}
pub fn get_generator(name: &str) -> Option<Box<dyn Generator>> {
match name {
"typescript" => Some(Box::new(typescript::TypeScriptGenerator::default())),
"rust" => Some(Box::new(rust::RustGenerator::default())),
"python" => Some(Box::new(python::PythonGenerator::default())),
_ => None,
}
}