summaryrefslogtreecommitdiff
path: root/src/generate_html.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/generate_html.rs')
-rw-r--r--src/generate_html.rs38
1 files changed, 16 insertions, 22 deletions
diff --git a/src/generate_html.rs b/src/generate_html.rs
index 19cf9a5..d48e3fe 100644
--- a/src/generate_html.rs
+++ b/src/generate_html.rs
@@ -13,27 +13,16 @@ pub fn generate_html(document: &MarkdownDocument, page: &Page, website: &Website
parent_url.push_str(&make_url_safe(segment)); parent_url.push('/');
}
parent_url.pop();
- let parent_name = match page.parents.get(page.parents.len()-1) {
- Some(parent) => parent.to_string(),
+ let home_link = format!("<a id='home' href='{root}index.html'>{site_name}</a>");
+ let parent_link = match page.parents.get(page.parents.len()-1) {
+ Some(name) => format!("<a id='parent' href='../{parent_url}.html'>{name}</a>"),
None => String::new(),
};
let head = get_html_head(document, page); let head = head.trim();
- let mut home = format!("<a id='home' href='{root}index.html'>{site_name}</a>");
- let mut parent = format!("<a id='parent' href='../{parent_url}.html'>{parent_name}</a>");
- let mut title = format!("<h1 id='title'>{page_name}</h1>");
- let mut toc = get_table_of_contents(page);
+ let table_of_contents = get_table_of_contents(page);
let main = document_to_html(document, page, website); let main = main.trim();
- if page.parents.is_empty() {
- parent.clear();
- if page.name_url == "index" {
- home.clear();
- title.clear();
- toc.clear();
- }
- }
-
format!("\
<!DOCTYPE html>
<head>
@@ -45,11 +34,13 @@ pub fn generate_html(document: &MarkdownDocument, page: &Page, website: &Website
<body>
<header>
<nav id='up'>
-{home}
-{parent}
+{home_link}
+{parent_link}
+</nav>
+<h1 id='title'>{page_name}</h1>
+<nav id='toc'>
+{table_of_contents}
</nav>
-{title}
-{toc}
</header>
<main>
{main}
@@ -78,7 +69,10 @@ pub fn get_table_of_contents(page: &Page) -> String {
if page.headings.len() < 3 {
return String::new();
}
- let mut toc = String::from("<nav id='toc'><details><summary></summary><ul>\n");
+ let mut toc = String::from("<details><summary></summary><ul>\n");
+ let site_name = &page.name;
+ toc.push_str(&format!("<li class='l1'><a href='#title'>{site_name}</a></li>\n"));
+
for heading in &page.headings {
let name = &heading.name;
let url = &heading.url;
@@ -87,9 +81,9 @@ pub fn get_table_of_contents(page: &Page) -> String {
Level::Heading2 => "l2",
Level::Heading3 => "l3",
};
- toc.push_str(&format!("<li><a href='#{url}' class='{class}'>{name}</a></li>\n"));
+ toc.push_str(&format!("<li class='{class}'><a href='#{url}'>{name}</a></li>\n"));
}
- toc.push_str("</ul></details></nav>\n");
+ toc.push_str("</ul></details>\n");
return toc;
}