pub mod base;
pub mod elixir;
pub mod php;
pub mod python;
pub mod ruby;
pub mod rust_lang;
pub mod typescript;
use super::spec_parser::ProtobufSchema;
use anyhow::Result;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ProtobufTarget {
Messages,
Services,
All,
}
pub trait ProtobufGenerator {
fn generate_messages(&self, schema: &ProtobufSchema) -> Result<String>;
fn generate_services(&self, schema: &ProtobufSchema) -> Result<String>;
fn generate_complete(&self, schema: &ProtobufSchema) -> Result<String> {
let messages = self.generate_messages(schema)?;
let services = self.generate_services(schema)?;
Ok(format!("{messages}\n\n{services}"))
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_protobuf_target_enum() {
assert_eq!(ProtobufTarget::Messages, ProtobufTarget::Messages);
assert_ne!(ProtobufTarget::Messages, ProtobufTarget::Services);
assert_ne!(ProtobufTarget::All, ProtobufTarget::Messages);
}
}