1
0

Fixes #416: remove frontmatter when including or using a template

This commit is contained in:
Zef Hemel 2023-06-14 10:20:21 +02:00
parent a5ae15e803
commit 260c91e4b1
2 changed files with 7 additions and 6 deletions

View File

@ -14,6 +14,7 @@ import {
export async function extractFrontmatter(
tree: ParseTree,
removeKeys: string[] = [],
removeFrontmatterSection = false,
): Promise<any> {
let data: any = {};
addParentPointers(tree);
@ -55,7 +56,7 @@ export async function extractFrontmatter(
}
}
// If nothing is left, let's just delete this whole block
if (Object.keys(newData).length === 0) {
if (Object.keys(newData).length === 0 || removeFrontmatterSection) {
return null;
}
} catch (e: any) {

View File

@ -45,15 +45,15 @@ export async function templateDirectiveRenderer(
} else {
templateText = await space.readPage(template);
}
let newBody = templateText;
const tree = await markdown.parseMarkdown(templateText);
await extractFrontmatter(tree, [], true); // Remove entire frontmatter section, if any
let newBody = renderToText(tree);
// if it's a template injection (not a literal "include")
if (directive === "use") {
const tree = await markdown.parseMarkdown(templateText);
await extractFrontmatter(tree, ["$disableDirectives"]);
templateText = renderToText(tree);
registerHandlebarsHelpers();
const templateFn = Handlebars.compile(
replaceTemplateVars(templateText, pageName),
replaceTemplateVars(newBody, pageName),
{ noEscape: true },
);
if (typeof parsedArgs !== "string") {