From d5cb5c854623ec4153205633cfd6f760322b2a25 Mon Sep 17 00:00:00 2001 From: David Anson Date: Tue, 4 Mar 2025 21:04:24 -0800 Subject: [PATCH] Update getHeadingText helper to exclude HTML comments from returned heading text (fixes #1411). --- helpers/micromark-helpers.cjs | 10 +++++++-- ...heading-duplicate-content-siblings-only.md | 6 ++++++ .../markdownlint-test-scenarios.mjs.md | 19 ++++++++++++++++++ .../markdownlint-test-scenarios.mjs.snap | Bin 263599 -> 263685 bytes 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/helpers/micromark-helpers.cjs b/helpers/micromark-helpers.cjs index f9f21f03..aa35b96d 100644 --- a/helpers/micromark-helpers.cjs +++ b/helpers/micromark-helpers.cjs @@ -7,6 +7,8 @@ const { flatTokensSymbol, htmlFlowSymbol } = require("./shared.cjs"); // eslint-disable-next-line jsdoc/valid-types /** @typedef {import("micromark-util-types", { with: { "resolution-mode": "import" } }).TokenType} TokenType */ /** @typedef {import("../lib/exports.mjs").MicromarkToken} Token */ +// eslint-disable-next-line jsdoc/valid-types +/** @typedef {import("../lib/micromark-types.d.mts", { with: { "resolution-mode": "import" } })} */ /** * Determines if a Micromark token is within an htmlFlow type. @@ -214,8 +216,12 @@ function getHeadingStyle(heading) { * @returns {string} Heading text. */ function getHeadingText(heading) { - const headingTexts = getDescendantsByType(heading, [ [ "atxHeadingText", "setextHeadingText" ] ]); - return headingTexts[0]?.text.replace(/[\r\n]+/g, " ") || ""; + const headingText = getDescendantsByType(heading, [ [ "atxHeadingText", "setextHeadingText" ] ]) + .flatMap((descendant) => descendant.children.filter((child) => child.type !== "htmlText")) + .map((data) => data.text) + .join("") + .replace(/[\r\n]+/g, " "); + return headingText || ""; } /** diff --git a/test/heading-duplicate-content-siblings-only.md b/test/heading-duplicate-content-siblings-only.md index 2c3c2f19..8add9fe7 100644 --- a/test/heading-duplicate-content-siblings-only.md +++ b/test/heading-duplicate-content-siblings-only.md @@ -95,6 +95,12 @@ BB {MD024:94} +## Headings + +## Headings + +{MD024:-2} + ␊ + ␊ + ## Headings ␊ + ␊ + {MD024:-2}␊ + ␊