{name}
line {line}{signature}{docs}{details}Generated API documentation for this library's source modules, cells, functions, and enum types.
{}This module has no documented declarations.
"); + } + page_shell(library, &name, Some(&name), navigation, &body) +} + +fn push_section(body: &mut String, title: &str, items: Vec{}| Argument | Type |
|---|
{signature}{docs}{details}{}
", render_inline(line))); + } + } + if in_list { + html.push_str(""); + } + html.push_str("{}", escape(part)));
+ } else {
+ output.push_str(&escape(part));
+ }
+ }
+ output
+}
+
+fn escape(value: &str) -> String {
+ value
+ .replace('&', "&")
+ .replace('<', "<")
+ .replace('>', ">")
+ .replace('"', """)
+ .replace('\'', "'")
+}
+
+#[cfg(test)]
+mod tests {
+ use std::fs;
+
+ use crate::{Library, doc};
+
+ #[test]
+ fn generates_linked_static_library_documentation() {
+ let directory = tempfile::tempdir().unwrap();
+ fs::write(directory.path().join("Argon.toml"), "name = \"demo\"\n").unwrap();
+ fs::write(
+ directory.path().join("lib.ar"),
+ "//! Demo cells.\n/// Routing modes.\nenum Mode { Fast, Quiet, }\n/// Builds a route.\n/// # Arguments\n/// - `mode`: routing mode.\ncell route(mode: Mode) {}\n",
+ )
+ .unwrap();
+ let library = Library::load(directory.path().join("Argon.toml")).unwrap();
+ let output = directory.path().join("generated-docs");
+ let report = doc::generate(&library, &output).unwrap();
+
+ assert_eq!(report.modules, 1);
+ let page = fs::read_to_string(output.join("module-root.html")).unwrap();
+ assert!(page.contains("Demo cells."));
+ assert!(page.contains("id=\"cell.route\""));
+ assert!(page.contains("href=\"module-root.html#enum.Mode\""));
+ assert!(page.contains("routing mode"));
+ assert!(!page.contains("