commit 8fdcd6d1ef8eb3670e5a29dc8d51fac32fd4546b from: Murilo Ijanc date: Mon Apr 13 13:16:04 2026 UTC place post metadata and toc after h1 title add sourcehut and github clone urls to readme 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("

"); - content.push_str(&format!( + meta_block.push_str("

"); + meta_block.push_str(&format!( "", posts[i].meta.date, )); if !posts[i].meta.updated.is_empty() { - content.push_str(&format!( + meta_block.push_str(&format!( " | ", posts[i].meta.updated, )); } if !posts[i].meta.tags.is_empty() { - content.push_str("
Tags: "); + meta_block.push_str("
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!( "{}", slug, tag )); } } - content.push_str("

\n"); + meta_block.push_str("

\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("") { + 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); }