mod doctest;
mod highlight;
mod links;
mod markdown;
mod model;
mod render;
mod search;
mod signature;
mod write;
pub use doctest::{package_doc_tests, std_doc_tests, DocTest, Origin};
pub use links::{check_links, BrokenLink};
pub use markdown::{classify, code_blocks, hidden, hide_lines, Block, CodeBlock, CodeLine};
pub use model::{document_package, document_std, Documented, Failure, Site};
pub use write::{write_site, WriteError, MARKER};
pub(crate) const CSS: &str = include_str!("../assets/nova.css");
pub(crate) const JS: &str = include_str!("../assets/nova.js");
pub(crate) fn escape(text: &str) -> String {
let mut out = String::with_capacity(text.len());
for c in text.chars() {
match c {
'&' => out.push_str("&"),
'<' => out.push_str("<"),
'>' => out.push_str(">"),
'"' => out.push_str("""),
'\'' => out.push_str("'"),
c => out.push(c),
}
}
out
}
pub(crate) fn span(out: &mut String, class: &str, text: &str) {
out.push_str("<span class=\"");
out.push_str(class);
out.push_str("\">");
out.push_str(&escape(text));
out.push_str("</span>");
}