Capture global module docs in JSON.

This commit is contained in:
Stephen Chung 2022-12-01 23:35:26 +08:00
parent fcc363af60
commit eb5b15e954
2 changed files with 24 additions and 2 deletions

View File

@ -247,6 +247,7 @@ fn setup_editor() -> Editor<()> {
rl
}
/// Module containing sample functions.
#[export_module]
mod sample_functions {
/// This is a sample function.

View File

@ -168,6 +168,8 @@ pub fn gen_metadata_to_json(
include_standard_packages: bool,
) -> serde_json::Result<String> {
let _ast = ast;
#[cfg(feature = "metadata")]
let mut global_doc = String::new();
let mut global = ModuleMetadata::new();
#[cfg(not(feature = "no_module"))]
@ -185,7 +187,16 @@ pub fn gen_metadata_to_json(
.global_modules
.iter()
.filter(|m| !m.flags.contains(exclude_flags))
.flat_map(|m| m.iter_fn())
.flat_map(|m| {
#[cfg(feature = "metadata")]
if !m.doc().is_empty() {
if !global_doc.is_empty() {
global_doc.push('\n');
}
global_doc.push_str(m.doc());
}
m.iter_fn()
})
.for_each(|f| {
#[allow(unused_mut)]
let mut meta: FnMetadata = f.into();
@ -213,7 +224,17 @@ pub fn gen_metadata_to_json(
#[cfg(feature = "metadata")]
if let Some(ast) = _ast {
global.doc = ast.doc();
if !ast.doc().is_empty() {
if !global_doc.is_empty() {
global_doc.push('\n');
}
global_doc.push_str(ast.doc());
}
}
#[cfg(feature = "metadata")]
{
global.doc = &global_doc;
}
serde_json::to_string_pretty(&global)