diff --git a/src/runtime/markdown-parser/frontmatter.ts b/src/runtime/markdown-parser/frontmatter.ts deleted file mode 100644 index 23d6fdd34..000000000 --- a/src/runtime/markdown-parser/frontmatter.ts +++ /dev/null @@ -1,41 +0,0 @@ -import yaml from 'js-yaml' -import flat from 'flat' - -const FRONTMATTER_DELIMITER = '---' - -export function stringifyFrontMatter (data: any, content: string = '') { - // flatten frontmatter data - // convert `parent: { child: ... }` into flat keys `parent.child` - data = flat.flatten(data, { - // preserve arrays and their contents as is and do not waltk through arrays - // flatten array will be like `parent.0.child` and `parent.1.child` with is not readable - safe: true - }) - - return [ - FRONTMATTER_DELIMITER, - yaml.dump(data, { lineWidth: -1 }), - FRONTMATTER_DELIMITER, - content - ].join('\n') -} - -export function parseFrontMatter (content: string) { - let data = {} - if (content.startsWith('---\n')) { - const idx = content.indexOf('\n---') - if (idx !== -1) { - const frontmatter = content.slice(4, idx) - if (frontmatter) { - data = yaml.load(frontmatter) - content = content.slice(idx + 4) - } - } - } - - return { - content, - // unflatten frontmatter data. convert `parent.child` keys into `parent: { child: ... }` - data: flat.unflatten(data || {}, {}) as Record - } -} diff --git a/src/runtime/markdown-parser/index.ts b/src/runtime/markdown-parser/index.ts index 30acab2da..b310efb70 100644 --- a/src/runtime/markdown-parser/index.ts +++ b/src/runtime/markdown-parser/index.ts @@ -9,7 +9,7 @@ import rehypeSortAttributeValues from 'rehype-sort-attribute-values' import rehypeSortAttributes from 'rehype-sort-attributes' import rehypeRaw from 'rehype-raw' import { MarkdownOptions, Toc } from '../types' -import { parseFrontMatter } from './frontmatter' +import { parseFrontMatter } from './remark-mdc/frontmatter' import { generateToc } from './toc' import { contentHeading, generateBody } from './content' @@ -92,4 +92,4 @@ function useExcerpt (content: string, delimiter = //i) { return content } -export * from './frontmatter' +export * from './remark-mdc/frontmatter' diff --git a/src/runtime/markdown-parser/remark-mdc/frontmatter.ts b/src/runtime/markdown-parser/remark-mdc/frontmatter.ts index 201830ea9..59d63b91f 100644 --- a/src/runtime/markdown-parser/remark-mdc/frontmatter.ts +++ b/src/runtime/markdown-parser/remark-mdc/frontmatter.ts @@ -22,7 +22,7 @@ export function stringifyFrontMatter (data: any, content: string = '') { export function parseFrontMatter (content: string) { let data = {} - if (content.startsWith(FRONTMATTER_DELIMITER + '\n')) { + if (content.startsWith(FRONTMATTER_DELIMITER)) { const idx = content.indexOf('\n' + FRONTMATTER_DELIMITER) if (idx !== -1) { const frontmatter = content.slice(4, idx)