implement original references, gen time, fix special chars escape

This commit is contained in:
yggverse 2026-03-19 19:06:29 +02:00
parent 4bbb4e79b2
commit 02a7697b49
2 changed files with 32 additions and 1 deletions

View file

@ -25,4 +25,8 @@ pub struct Config {
/// Generate index file with given name /// Generate index file with given name
#[arg(short, long)] #[arg(short, long)]
pub index: Option<String>, pub index: Option<String>,
/// Append reference to original source (mirrors)
#[arg(short, long)]
pub refer: Vec<String>,
} }

View file

@ -119,8 +119,27 @@ fn main() -> Result<()> {
path path
})?; })?;
for discussion in &discussions { for discussion in &discussions {
file.write_all(format!("* [{}]({}.md)\n", discussion.title, discussion.id).as_bytes())?; file.write_all(
format!(
"* [{}]({}.md)\n",
discussion
.title
.replace("[", "\\[")
.replace("]", "\\]")
.replace("(", "\\(")
.replace(")", "\\)"),
discussion.id
)
.as_bytes(),
)?;
} }
let mut footer = Vec::new();
footer.push("\n---\n".into());
footer.push(format!("Generated at {}\n", Utc::now()));
for refer in &config.refer {
footer.push(format!("* {refer}"));
}
file.write_all(footer.join("\n").as_bytes())?
} }
for discussion in discussions { for discussion in discussions {
@ -176,6 +195,14 @@ fn main() -> Result<()> {
} }
content.push("---\n".into()) content.push("---\n".into())
} }
content.push(format!("Generated at {}\n", Utc::now()));
for refer in &config.refer {
content.push(format!(
"* {}/d/{}",
refer.trim_end_matches("/"),
discussion.id
));
}
content.join("\n") content.join("\n")
}); });
page.join("\n") page.join("\n")