From 44e42d608da5990ced5572d20ea2d5920246b1b2 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Thu, 22 Aug 2024 15:29:49 +0200 Subject: [PATCH] Allow hidden modules, not generating any documentation. This is useful when splitting module for dependencies, yet without the desire to expose internal constructors and types. This merely skips the documentation generation; but doesn't prevent the hidden module from being accessible. --- crates/aiken-project/src/docs.rs | 23 ++++++++++++++--------- crates/aiken-project/src/module.rs | 9 +++++++++ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/crates/aiken-project/src/docs.rs b/crates/aiken-project/src/docs.rs index 7f41249f..79bfa4d0 100644 --- a/crates/aiken-project/src/docs.rs +++ b/crates/aiken-project/src/docs.rs @@ -127,6 +127,10 @@ pub fn generate_all(root: &Path, config: &Config, modules: Vec<&CheckedModule>) let mut search_indexes: Vec = vec![]; for module in &modules { + if module.skip_doc_generation() { + continue; + } + let (indexes, file) = generate_module(config, module, &modules_links, &source, ×tamp); if !indexes.is_empty() { search_indexes.extend(indexes); @@ -356,15 +360,16 @@ fn generate_modules_links(modules: &[&CheckedModule]) -> Vec { let non_empty_modules = modules .iter() .filter(|module| { - module.ast.definitions.iter().any(|def| { - matches!( - def, - Definition::Fn(Function { public: true, .. }) - | Definition::DataType(DataType { public: true, .. }) - | Definition::TypeAlias(TypeAlias { public: true, .. }) - | Definition::ModuleConstant(ModuleConstant { public: true, .. }) - ) - }) + !module.skip_doc_generation() + && module.ast.definitions.iter().any(|def| { + matches!( + def, + Definition::Fn(Function { public: true, .. }) + | Definition::DataType(DataType { public: true, .. }) + | Definition::TypeAlias(TypeAlias { public: true, .. }) + | Definition::ModuleConstant(ModuleConstant { public: true, .. }) + ) + }) }) .sorted_by(|a, b| a.name.cmp(&b.name)) .collect_vec(); diff --git a/crates/aiken-project/src/module.rs b/crates/aiken-project/src/module.rs index f6a3b4e2..cb28ff5c 100644 --- a/crates/aiken-project/src/module.rs +++ b/crates/aiken-project/src/module.rs @@ -291,6 +291,15 @@ pub struct CheckedModule { } impl CheckedModule { + pub fn skip_doc_generation(&self) -> bool { + self.ast + .docs + .first() + .map(|s| s.as_str().trim()) + .unwrap_or_default() + == "@hidden" + } + pub fn to_cbor(&self) -> Vec { let mut module_bytes = vec![];