From 25af7e337627149a1ae7a0c5b96009fd8a1bf607 Mon Sep 17 00:00:00 2001 From: Andrew Jiang Date: Tue, 29 Oct 2024 10:05:54 -0400 Subject: [PATCH] fix prepare mdx content --- .../ui/fern-docs-mdx/src/mdast-utils/mdast-from-markdown.ts | 6 ++++-- .../ui/fern-docs-mdx/src/mdast-utils/mdast-to-markdown.ts | 3 ++- .../ui/fern-docs-mdx/src/mdast-utils/mdast-to-string.ts | 6 +++++- .../algolia/records/__test__/prepare-mdx-content.test.ts | 5 ++--- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-from-markdown.ts b/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-from-markdown.ts index ff3c3f9008..0ded44e0d4 100644 --- a/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-from-markdown.ts +++ b/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-from-markdown.ts @@ -1,7 +1,9 @@ import type { Root as MdastRoot } from "mdast"; import { fromMarkdown } from "mdast-util-from-markdown"; +import { gfmFromMarkdown } from "mdast-util-gfm"; import { mathFromMarkdown } from "mdast-util-math"; import { mdxFromMarkdown } from "mdast-util-mdx"; +import { gfm } from "micromark-extension-gfm"; import { math } from "micromark-extension-math"; import { mdxjs } from "micromark-extension-mdxjs"; import { UnreachableCaseError } from "ts-essentials"; @@ -11,8 +13,8 @@ export function mdastFromMarkdown(content: string, format: "mdx" | "md" = "mdx") return fromMarkdown(content); } else if (format === "mdx") { return fromMarkdown(content, { - extensions: [mdxjs(), math()], - mdastExtensions: [mdxFromMarkdown(), mathFromMarkdown()], + extensions: [mdxjs(), math(), gfm()], + mdastExtensions: [mdxFromMarkdown(), mathFromMarkdown(), gfmFromMarkdown()], }); } else { throw new UnreachableCaseError(format); diff --git a/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-to-markdown.ts b/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-to-markdown.ts index 3e8f610776..fc7905d48c 100644 --- a/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-to-markdown.ts +++ b/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-to-markdown.ts @@ -1,10 +1,11 @@ import type { Root as MdastRoot } from "mdast"; +import { gfmToMarkdown } from "mdast-util-gfm"; import { mathToMarkdown } from "mdast-util-math"; import { mdxToMarkdown } from "mdast-util-mdx"; import { toMarkdown } from "mdast-util-to-markdown"; export function mdastToMarkdown(mdast: MdastRoot): string { return toMarkdown(mdast, { - extensions: [mdxToMarkdown(), mathToMarkdown()], + extensions: [mdxToMarkdown(), mathToMarkdown(), gfmToMarkdown()], }); } diff --git a/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-to-string.ts b/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-to-string.ts index e8ed0576f8..d11c51ec21 100644 --- a/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-to-string.ts +++ b/packages/ui/fern-docs-mdx/src/mdast-utils/mdast-to-string.ts @@ -72,7 +72,7 @@ function one(value: unknown, includeImageAlt: boolean, includeHtml: boolean, pre if ("children" in value) { return ( all(value.children as Array, includeImageAlt, includeHtml, preserveNewlines) + - (preserveNewlines && hasBreak(value) ? "\n" : "") + (preserveNewlines && hasBreak(value) ? "\n" : hasSpace(value) ? " " : "") ); } } @@ -96,6 +96,10 @@ function hasBreak(value: Extract): boolean { ); } +function hasSpace(value: Extract): boolean { + return hasBreak(value) || value.type === "tableCell"; +} + /** * Serialize a list of nodes. * diff --git a/packages/ui/fern-docs-search-server/src/algolia/records/__test__/prepare-mdx-content.test.ts b/packages/ui/fern-docs-search-server/src/algolia/records/__test__/prepare-mdx-content.test.ts index 39e12818de..2ba4864691 100644 --- a/packages/ui/fern-docs-search-server/src/algolia/records/__test__/prepare-mdx-content.test.ts +++ b/packages/ui/fern-docs-search-server/src/algolia/records/__test__/prepare-mdx-content.test.ts @@ -73,9 +73,8 @@ Be sure to save the generated token - it won't be displayed after you leave the `; const result = prepareMdxContent(content); expect(result.content).toMatchInlineSnapshot(` - "| Column 1 | Column 2 | Column 3 | - | -------- | -------- | -------- | - | Value 1 | Value 2 | Value 3 |" + "Column 1 Column 2 Column 3 + Value 1 Value 2 Value 3" `); }); });