gather_all_code_from_crates/
extract_signature.rs

1crate::ix!();
2
3pub fn extract_signature(fn_def: &ast::Fn, remove_doc_comments: bool) -> String {
4    let vis_str = fn_def.visibility()
5        .map(|v| v.syntax().text().to_string() + " ")
6        .unwrap_or_default();
7
8    let name_str = fn_def.name()
9        .map(|n| n.text().to_string())
10        .unwrap_or_default();
11
12    let params_str = fn_def.param_list()
13        .map(|p| p.syntax().text().to_string())
14        .unwrap_or_else(|| "()".to_string());
15
16    let ret_str = fn_def.ret_type()
17        .map(|r| format!(" {}", r.syntax().text()))
18        .unwrap_or_default();
19
20    let mut signature = format!("{}fn {}{}{}", vis_str, name_str, params_str, ret_str);
21
22    if remove_doc_comments {
23        // Remove doc comments from the signature line if any appear (unlikely if we build purely from AST)
24        signature = filter_doc_comments(&signature, true);
25    }
26
27    signature.trim_end().to_string()
28}