full site update
This commit is contained in:
58
node_modules/@astrojs/markdown-remark/dist/frontmatter.js
generated
vendored
Normal file
58
node_modules/@astrojs/markdown-remark/dist/frontmatter.js
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
import yaml from "js-yaml";
|
||||
import * as toml from "smol-toml";
|
||||
function isFrontmatterValid(frontmatter) {
|
||||
try {
|
||||
JSON.stringify(frontmatter);
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
return typeof frontmatter === "object" && frontmatter !== null;
|
||||
}
|
||||
const frontmatterRE = /(?:^\uFEFF?|^\s*\n)(?:---|\+\+\+)([\s\S]*?\n)(?:---|\+\+\+)/;
|
||||
const frontmatterTypeRE = /(?:^\uFEFF?|^\s*\n)(---|\+\+\+)/;
|
||||
function extractFrontmatter(code) {
|
||||
return frontmatterRE.exec(code)?.[1];
|
||||
}
|
||||
function getFrontmatterParser(code) {
|
||||
return frontmatterTypeRE.exec(code)?.[1] === "+++" ? ["+++", toml.parse] : ["---", yaml.load];
|
||||
}
|
||||
function parseFrontmatter(code, options) {
|
||||
const rawFrontmatter = extractFrontmatter(code);
|
||||
if (rawFrontmatter == null) {
|
||||
return { frontmatter: {}, rawFrontmatter: "", content: code };
|
||||
}
|
||||
const [delims, parser] = getFrontmatterParser(code);
|
||||
const parsed = parser(rawFrontmatter);
|
||||
const frontmatter = parsed && typeof parsed === "object" ? parsed : {};
|
||||
let content;
|
||||
switch (options?.frontmatter ?? "remove") {
|
||||
case "preserve":
|
||||
content = code;
|
||||
break;
|
||||
case "remove":
|
||||
content = code.replace(`${delims}${rawFrontmatter}${delims}`, "");
|
||||
break;
|
||||
case "empty-with-spaces":
|
||||
content = code.replace(
|
||||
`${delims}${rawFrontmatter}${delims}`,
|
||||
` ${rawFrontmatter.replace(/[^\r\n]/g, " ")} `
|
||||
);
|
||||
break;
|
||||
case "empty-with-lines":
|
||||
content = code.replace(
|
||||
`${delims}${rawFrontmatter}${delims}`,
|
||||
rawFrontmatter.replace(/[^\r\n]/g, "")
|
||||
);
|
||||
break;
|
||||
}
|
||||
return {
|
||||
frontmatter,
|
||||
rawFrontmatter,
|
||||
content
|
||||
};
|
||||
}
|
||||
export {
|
||||
extractFrontmatter,
|
||||
isFrontmatterValid,
|
||||
parseFrontmatter
|
||||
};
|
Reference in New Issue
Block a user