commit - 9703368d1f6b4ee0d0d6e5e89fb2c31892c4a616
commit + 8fdcd6d1ef8eb3670e5a29dc8d51fac32fd4546b
blob - cec7e5ae7bceb701441d4ea4de4151a3aafed890
blob + 1c1f2ca8ce045808eb36be4c7f12d0bd49a4a218
--- README.md
+++ README.md
--------
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
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);
}