fix(embedded): Allow non-starting dashes in frontmatter

This commit is contained in:
Ed Page 2025-02-14 10:23:10 -06:00
parent b14a5f4ae9
commit fd2000b106

View File

@ -176,6 +176,7 @@ impl<'s> ScriptSource<'s> {
} }
_ => rest.split_at(fence_end), _ => rest.split_at(fence_end),
}; };
let nl_fence_pattern = format!("\n{fence_pattern}");
let (info, content) = rest.split_once("\n").unwrap_or((rest, "")); let (info, content) = rest.split_once("\n").unwrap_or((rest, ""));
let info = info.trim(); let info = info.trim();
if !info.is_empty() { if !info.is_empty() {
@ -183,11 +184,11 @@ impl<'s> ScriptSource<'s> {
} }
source.content = content; source.content = content;
let Some((frontmatter, content)) = source.content.split_once(fence_pattern) else { let Some(frontmatter_nl) = source.content.find(&nl_fence_pattern) else {
anyhow::bail!("no closing `{fence_pattern}` found for frontmatter"); anyhow::bail!("no closing `{fence_pattern}` found for frontmatter");
}; };
source.frontmatter = Some(frontmatter); source.frontmatter = Some(&source.content[..frontmatter_nl + 1]);
source.content = content; source.content = &source.content[frontmatter_nl + nl_fence_pattern.len()..];
let (line, content) = source let (line, content) = source
.content .content
@ -543,8 +544,8 @@ fn main() {}
str![[r##" str![[r##"
shebang: "#!/usr/bin/env cargo\n" shebang: "#!/usr/bin/env cargo\n"
info: None info: None
frontmatter: "Hello" frontmatter: "Hello---\nWorld\n"
content: "World\n---\n\nfn main() {}\n" content: "\nfn main() {}\n"
"##]], "##]],
); );