2
1
Fork 0

typegen: insert newlines after callouts to avoid breaking new site

This commit is contained in:
outfoxxed 2024-11-09 00:11:49 -08:00
parent 593634eb27
commit 34f0819a76
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E
2 changed files with 19 additions and 6 deletions

View file

@ -648,8 +648,8 @@ fn parse_details(comment: Comment) -> String {
module: comment.module,
};
crate::reformat::GfmQuoteBlocks::reformat(&reformat_ctx, &mut str);
crate::reformat::TypeLinks::reformat(&reformat_ctx, &mut str);
crate::reformat::GfmQuoteBlocks::new().reformat(&reformat_ctx, &mut str);
crate::reformat::TypeLinks.reformat(&reformat_ctx, &mut str);
str
}

View file

@ -1,25 +1,38 @@
use std::borrow::Cow;
use fancy_regex::Regex;
pub struct Context<'a> {
pub module: &'a str,
}
pub trait ReformatPass {
fn reformat(context: &Context, text: &mut String);
fn reformat(&self, context: &Context, text: &mut String);
}
pub struct GfmQuoteBlocks;
pub struct GfmQuoteBlocks {
callout_regex: Regex,
}
impl GfmQuoteBlocks {
pub fn new() -> Self {
Self {
callout_regex: Regex::new(r#">\s+\[!(?<type>\w+)]\s+(?=\w)"#).unwrap()
}
}
}
impl ReformatPass for GfmQuoteBlocks {
fn reformat(_: &Context, text: &mut String) {
fn reformat(&self, _: &Context, text: &mut String) {
*text = text.replace("> [!INFO]", "> [!NOTE]");
*text = self.callout_regex.replace_all(text, "> [!$type]\n> ").to_string();
}
}
pub struct TypeLinks;
impl ReformatPass for TypeLinks {
fn reformat(context: &Context, text: &mut String) {
fn reformat(&self ,context: &Context, text: &mut String) {
let lines = text.lines().map(|line| {
if line.contains("@@") {
let mut src: &str = &*line;