From caf9b83dbef90d355d9d9c6ff58a2de4e5dd8e76 Mon Sep 17 00:00:00 2001 From: Ahad Birang Date: Tue, 21 Jun 2022 15:48:28 +0200 Subject: [PATCH] fix(mdc-parser): minor fixes in markdown generation --- .../markdown-parser/remark-mdc/frontmatter.ts | 6 +++++- src/runtime/markdown-parser/remark-mdc/index.ts | 2 +- .../markdown-parser/remark-mdc/to-markdown.ts | 12 ++++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/runtime/markdown-parser/remark-mdc/frontmatter.ts b/src/runtime/markdown-parser/remark-mdc/frontmatter.ts index 59d63b91f..3e1b6bd25 100644 --- a/src/runtime/markdown-parser/remark-mdc/frontmatter.ts +++ b/src/runtime/markdown-parser/remark-mdc/frontmatter.ts @@ -12,9 +12,13 @@ export function stringifyFrontMatter (data: any, content: string = '') { safe: true }) + if (!Object.keys(data).length) { + return '' + } + return [ FRONTMATTER_DELIMITER, - yaml.dump(data, { lineWidth: -1 }), + yaml.dump(data, { lineWidth: -1 }).trim(), FRONTMATTER_DELIMITER, content ].join('\n') diff --git a/src/runtime/markdown-parser/remark-mdc/index.ts b/src/runtime/markdown-parser/remark-mdc/index.ts index e8b45f014..4dfc494bb 100644 --- a/src/runtime/markdown-parser/remark-mdc/index.ts +++ b/src/runtime/markdown-parser/remark-mdc/index.ts @@ -48,7 +48,7 @@ export default , Root, Root>> function ({ compone return async (tree: ComponentNode, { data }: { data: Record }) => { const jobs: Promise[] = [] visit(tree, ['textComponent', 'leafComponent', 'containerComponent'], (node) => { - bindNode(node, data) + bindNode(node) const { instance: handler, options } = components.find(c => c.name === node.name) || {} if (handler) { jobs.push(handler(options)(node, data)) diff --git a/src/runtime/markdown-parser/remark-mdc/to-markdown.ts b/src/runtime/markdown-parser/remark-mdc/to-markdown.ts index 7e5e4d259..253c53545 100644 --- a/src/runtime/markdown-parser/remark-mdc/to-markdown.ts +++ b/src/runtime/markdown-parser/remark-mdc/to-markdown.ts @@ -46,10 +46,18 @@ function componentContainerSection (node: NodeComponentContainerSection, _: any, type NodeTextComponent = Parent & { name: string; rawData: string } function textComponent (node: NodeTextComponent, _: any, context: any) { + let value context.indexStack = context.stack + const exit = context.enter(node.type) - let value = ':' + (node.name || '') + label(node, context) + attributes(node, context) - value += '\n' + content(node, context) + + if (node.name === 'span') { + // Handle span suger syntax + value = `[${content(node, context)}]${attributes(node, context)}` + } else { + value = ':' + (node.name || '') + label(node, context) + attributes(node, context) + } + exit() return value }