cargo_docs_md/generator/
config.rs1use std::path::PathBuf;
7
8#[derive(Debug, Clone)]
10#[expect(
11 clippy::struct_excessive_bools,
12 reason = "CLI flags map directly to these bools; cache optimization unnecessary here"
13)]
14pub struct RenderConfig {
15 pub toc_threshold: usize,
17
18 pub quick_reference: bool,
20
21 pub group_impls: bool,
23
24 pub hide_trivial_derives: bool,
26
27 pub method_anchors: bool,
29
30 pub full_method_docs: bool,
36
37 pub include_source: SourceConfig,
39}
40
41#[derive(Debug, Clone, Default)]
45#[expect(
46 clippy::struct_excessive_bools,
47 reason = "TODO: Consider cache line efficiency later"
48)]
49pub struct SourceConfig {
50 pub function_bodies: bool,
52
53 pub const_values: bool,
55
56 pub private_items: bool,
58
59 pub source_locations: bool,
61
62 pub source_dir: Option<PathBuf>,
68}
69
70impl Default for RenderConfig {
71 fn default() -> Self {
72 Self {
73 toc_threshold: 10,
74 quick_reference: true,
75 group_impls: true,
76 hide_trivial_derives: false,
77 method_anchors: true,
78 full_method_docs: false,
79 include_source: SourceConfig::default(),
80 }
81 }
82}
83
84#[cfg(test)]
85mod tests {
86 use super::*;
87
88 #[test]
89 fn render_config_default_values() {
90 let config = RenderConfig::default();
91
92 assert_eq!(config.toc_threshold, 10);
93 assert!(config.quick_reference);
94 assert!(config.group_impls);
95 assert!(!config.hide_trivial_derives);
96 assert!(config.method_anchors);
97 assert!(!config.full_method_docs);
98 }
99
100 #[test]
101 fn source_config_default_values() {
102 let config = SourceConfig::default();
103
104 assert!(!config.function_bodies);
105 assert!(!config.const_values);
106 assert!(!config.private_items);
107 assert!(!config.source_locations);
108 }
109
110 #[test]
111 fn render_config_source_config_default() {
112 let config = RenderConfig::default();
113 let source = &config.include_source;
114
115 assert!(!source.function_bodies);
117 assert!(!source.const_values);
118 assert!(!source.private_items);
119 assert!(!source.source_locations);
120 }
121
122 #[test]
123 fn render_config_custom_values() {
124 let config = RenderConfig {
125 toc_threshold: 5,
126 quick_reference: false,
127 group_impls: false,
128 hide_trivial_derives: true,
129 method_anchors: false,
130 full_method_docs: true,
131 include_source: SourceConfig {
132 function_bodies: true,
133 const_values: true,
134 private_items: true,
135 source_locations: true,
136 source_dir: Some(PathBuf::from(".source_12345")),
137 },
138 };
139
140 assert_eq!(config.toc_threshold, 5);
141 assert!(!config.quick_reference);
142 assert!(!config.group_impls);
143 assert!(config.hide_trivial_derives);
144 assert!(!config.method_anchors);
145 assert!(config.full_method_docs);
146 assert!(config.include_source.function_bodies);
147 assert!(config.include_source.const_values);
148 assert!(config.include_source.private_items);
149 assert!(config.include_source.source_locations);
150 assert!(config.include_source.source_dir.is_some());
151 }
152}