1mod doctest;
6mod highlight;
7mod links;
8mod markdown;
9mod model;
10mod render;
11mod search;
12mod signature;
13mod write;
14
15pub use doctest::{package_doc_tests, std_doc_tests, DocTest, Origin};
16pub use links::{check_links, BrokenLink};
17pub use markdown::{classify, code_blocks, hidden, hide_lines, Block, CodeBlock, CodeLine};
18pub use model::{document_package, document_std, Documented, Failure, Site};
19pub use write::{write_site, WriteError, MARKER};
20
21pub(crate) const CSS: &str = include_str!("../assets/nova.css");
23
24pub(crate) const JS: &str = include_str!("../assets/nova.js");
26
27pub(crate) fn escape(text: &str) -> String {
29 let mut out = String::with_capacity(text.len());
30 for c in text.chars() {
31 match c {
32 '&' => out.push_str("&"),
33 '<' => out.push_str("<"),
34 '>' => out.push_str(">"),
35 '"' => out.push_str("""),
36 '\'' => out.push_str("'"),
37 c => out.push(c),
38 }
39 }
40 out
41}
42
43pub(crate) fn span(out: &mut String, class: &str, text: &str) {
45 out.push_str("<span class=\"");
46 out.push_str(class);
47 out.push_str("\">");
48 out.push_str(&escape(text));
49 out.push_str("</span>");
50}