From 009be12cbfebf87b44c62d4122701449f5e38083 Mon Sep 17 00:00:00 2001 From: Joren Broekema Date: Mon, 2 Dec 2024 11:31:49 +0100 Subject: [PATCH] fix: fixes a validation issue with Markdown headings including trailing markup Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- packages/starlight-links-validator/libs/remark.ts | 4 +++- .../src/content/docs/guides/example.mdx | 14 ++++++++++++++ .../fixtures/valid-links/src/content/docs/index.md | 6 ++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/starlight-links-validator/libs/remark.ts b/packages/starlight-links-validator/libs/remark.ts index b3239f3..43b7d8a 100644 --- a/packages/starlight-links-validator/libs/remark.ts +++ b/packages/starlight-links-validator/libs/remark.ts @@ -56,7 +56,9 @@ export const remarkStarlightLinksValidator: Plugin<[{ base: string; srcDir: URL break } - fileHeadings.push(slugger.slug(content)) + // Remove the last trailing hyphen from the slug like Astro does if it exists. + // https://github.com/withastro/astro/blob/74ee2e45ecc9edbe285eadee6d0b94fc47d0d125/packages/integrations/markdoc/src/heading-ids.ts#L21 + fileHeadings.push(slugger.slug(content).replace(/-$/, '')) break } diff --git a/packages/starlight-links-validator/tests/fixtures/valid-links/src/content/docs/guides/example.mdx b/packages/starlight-links-validator/tests/fixtures/valid-links/src/content/docs/guides/example.mdx index 9e670f9..5bb83db 100644 --- a/packages/starlight-links-validator/tests/fixtures/valid-links/src/content/docs/guides/example.mdx +++ b/packages/starlight-links-validator/tests/fixtures/valid-links/src/content/docs/guides/example.mdx @@ -47,3 +47,17 @@ some content LinkCard: unknown page LinkCard: unknown page and hash LinkCard: unknown hash + +import { Badge } from '@astrojs/starlight/components' + +## Heading with trailing markup + +- [Link to heading with trailing markup](#heading-with-trailing-markup) + +## Heading with trailing markup and content Foo + +- [Link to heading with trailing markup and content](#heading-with-trailing-markup-and-content-foo) + +## Foo Heading with Foo complex markup Foo + +- [Link to heading with complex markup](#-foo-heading-with--foo-complex-markup-foo-) diff --git a/packages/starlight-links-validator/tests/fixtures/valid-links/src/content/docs/index.md b/packages/starlight-links-validator/tests/fixtures/valid-links/src/content/docs/index.md index 7ad6ba6..e9b7dc8 100644 --- a/packages/starlight-links-validator/tests/fixtures/valid-links/src/content/docs/index.md +++ b/packages/starlight-links-validator/tests/fixtures/valid-links/src/content/docs/index.md @@ -65,6 +65,12 @@ title: Index - [Link reference with query string and hash in this page][ref-with-query-string-and-hash-internal] - [Link reference with query string and hash in another page][ref-with-query-string-and-hash-external] +## Trailing markup + +- [Link to heading with trailing markup](/guides/example#heading-with-trailing-markup) +- [Link to heading with trailing markup and content](/guides/example#heading-with-trailing-markup-and-content-foo) +- [Link to heading with complex markup](/guides/example#-foo-heading-with--foo-complex-markup-foo-) + [ref-with-query-string]: /test?query=string [ref-with-query-string-and-hash-internal]: ?query=string#some-links [ref-with-query-string-and-hash-external]: /test?query=string#title