Commit Diff


commit - 9703368d1f6b4ee0d0d6e5e89fb2c31892c4a616
commit + 8fdcd6d1ef8eb3670e5a29dc8d51fac32fd4546b
blob - cec7e5ae7bceb701441d4ea4de4151a3aafed890
blob + 1c1f2ca8ce045808eb36be4c7f12d0bd49a4a218
--- README.md
+++ README.md
@@ -69,6 +69,8 @@ Download
 --------
     got clone ssh://anon@ijanc.org/kssg
     git clone https://git.ijanc.org/kssg.git
+    git clone https://git.sr.ht/~ijanc/kssg
+    git clone https://github.com/kssg.git
 
 License
 -------
blob - cc4374c8751ee18007023660d5f1d3679f57ddef
blob + e296698df90a959cf47d867a845648b0cc66077c
--- kssg.rs
+++ kssg.rs
@@ -520,47 +520,59 @@ fn build() {
     for i in 0..posts.len() {
         let nav = series_nav(&posts, i);
 
-        let mut content = String::new();
-
+        let mut meta_block = String::new();
         if posts[i].out_path.starts_with("public/posts") {
-            content.push_str("<p class=\"dates\">");
-            content.push_str(&format!(
+            meta_block.push_str("<p class=\"dates\">");
+            meta_block.push_str(&format!(
                 "<time>Criado: {}</time>",
                 posts[i].meta.date,
             ));
             if !posts[i].meta.updated.is_empty() {
-                content.push_str(&format!(
+                meta_block.push_str(&format!(
                     " | <time>Atualizado: {}</time>",
                     posts[i].meta.updated,
                 ));
             }
             if !posts[i].meta.tags.is_empty() {
-                content.push_str("<br>Tags: ");
+                meta_block.push_str("<br>Tags: ");
                 for (j, tag) in posts[i].meta.tags.iter().enumerate() {
                     if j > 0 {
-                        content.push_str(", ");
+                        meta_block.push_str(", ");
                     }
                     let slug = slugify(tag);
-                    content.push_str(&format!(
+                    meta_block.push_str(&format!(
                         "<a href=\"/tags/{}.html\">{}</a>",
                         slug, tag
                     ));
                 }
             }
-            content.push_str("</p>\n");
+            meta_block.push_str("</p>\n");
         }
 
-        if posts[i].meta.toc {
-            let toc = generate_toc(&posts[i].html_content);
-            content.push_str(&toc);
-        }
+        let toc_block = if posts[i].meta.toc {
+            generate_toc(&posts[i].html_content)
+        } else {
+            String::new()
+        };
 
         let html = if posts[i].meta.toc {
             add_heading_ids(&posts[i].html_content)
         } else {
             posts[i].html_content.clone()
         };
-        content.push_str(&html);
+
+        let mut content = String::new();
+        if let Some(idx) = html.find("</h1>") {
+            let (head, tail) = html.split_at(idx + 5);
+            content.push_str(head);
+            content.push_str(&meta_block);
+            content.push_str(&toc_block);
+            content.push_str(tail);
+        } else {
+            content.push_str(&meta_block);
+            content.push_str(&toc_block);
+            content.push_str(&html);
+        }
         if !nav.is_empty() {
             content.push_str(&nav);
         }