From a8ca8225d22ca8e2b297d69c7a58bd9fb3530dcf Mon Sep 17 00:00:00 2001 From: Harshit Date: Thu, 19 Mar 2026 23:55:17 +0530 Subject: [PATCH] fix(transformers): handle YAML comment prefixes correctly for v3 Improve `notation-transformer` to utilize `v3ClearEndCommentPrefix` so that dangling comment prefixes (e.g., `# ` in YAML) are completely removed when the comment notation is matched and stripped. Fixes: #1007 --- .../transformers/src/shared/notation-transformer.ts | 4 +++- packages/transformers/test/fixtures/diff/1007.yaml | 6 ++++++ .../test/fixtures/diff/1007.yaml.output.html | 12 ++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 packages/transformers/test/fixtures/diff/1007.yaml create mode 100644 packages/transformers/test/fixtures/diff/1007.yaml.output.html diff --git a/packages/transformers/src/shared/notation-transformer.ts b/packages/transformers/src/shared/notation-transformer.ts index 1f29aab8a..169b673fc 100644 --- a/packages/transformers/src/shared/notation-transformer.ts +++ b/packages/transformers/src/shared/notation-transformer.ts @@ -1,7 +1,7 @@ import type { ShikiTransformer, ShikiTransformerContext } from '@shikijs/core' import type { Element, Text } from 'hast' import type { ParsedComments } from './parse-comments' -import { parseComments, v1ClearEndCommentPrefix } from './parse-comments' +import { parseComments, v1ClearEndCommentPrefix, v3ClearEndCommentPrefix } from './parse-comments' export type MatchAlgorithm = 'v1' | 'v3' @@ -67,6 +67,8 @@ export function createCommentNotationTransformer( if (matchAlgorithm === 'v1') comment.info[1] = v1ClearEndCommentPrefix(comment.info[1]) + else if (matchAlgorithm === 'v3') + comment.info[1] = v3ClearEndCommentPrefix(comment.info[1]) const isEmpty = comment.info[1].trim().length === 0 // ignore comment node diff --git a/packages/transformers/test/fixtures/diff/1007.yaml b/packages/transformers/test/fixtures/diff/1007.yaml new file mode 100644 index 000000000..c49cc1472 --- /dev/null +++ b/packages/transformers/test/fixtures/diff/1007.yaml @@ -0,0 +1,6 @@ +# this leaves dangling `#` +# In the original issue, `[!code focus]` was an array element! +foo +# bar +# [!code ++] +[!code focus] diff --git a/packages/transformers/test/fixtures/diff/1007.yaml.output.html b/packages/transformers/test/fixtures/diff/1007.yaml.output.html new file mode 100644 index 000000000..37441e12f --- /dev/null +++ b/packages/transformers/test/fixtures/diff/1007.yaml.output.html @@ -0,0 +1,12 @@ +
# this leaves dangling `#`# In the original issue, `[!code focus]` was an array element!foo# bar[!code focus]
+ \ No newline at end of file