use crate::core::config::ResolvedCrateConfig;
use heck::ToPascalCase;
pub(in crate::backends::rustler::gen_bindings) fn get_module_info(
_api: &crate::core::ir::ApiSurface,
config: &ResolvedCrateConfig,
) -> (String, String) {
let app_name = config.elixir_app_name();
let module_prefix = app_name.to_pascal_case();
(app_name, module_prefix)
}
pub(super) fn emit_elixir_doc_attr(out: &mut String, attr: &str, doc: &str, indent: &str) {
if doc.trim().is_empty() {
return;
}
let trimmed = doc.trim_end_matches('\n');
if !trimmed.contains('\n') {
let escaped = trimmed.replace('\\', "\\\\").replace('"', "\\\"");
out.push_str(indent);
out.push('@');
out.push_str(attr);
out.push_str(" \"");
out.push_str(&escaped);
out.push_str("\"\n");
return;
}
out.push_str(indent);
out.push('@');
out.push_str(attr);
out.push_str(" \"\"\"\n");
for line in trimmed.lines() {
let safe = line.replace("\"\"\"", "\"\" \"");
if safe.is_empty() {
out.push('\n');
} else {
out.push_str(indent);
out.push_str(&safe);
out.push('\n');
}
}
out.push_str(indent);
out.push_str("\"\"\"\n");
}