diff --git a/app/assets/javascripts/discourse/tests/unit/lib/pretty-text-test.js b/app/assets/javascripts/discourse/tests/unit/lib/pretty-text-test.js index 2a64ccc6159..0f2a4877a84 100644 --- a/app/assets/javascripts/discourse/tests/unit/lib/pretty-text-test.js +++ b/app/assets/javascripts/discourse/tests/unit/lib/pretty-text-test.js @@ -701,6 +701,16 @@ eviltrout

); }); + test("Heading anchors are valid", function (assert) { + assert.cooked( + "# One\n\n# 1\n\n# $$", + '

One

\n' + + '

1

\n' + + '

$$

', + "It will bold the heading" + ); + }); + test("bold and italics", function (assert) { assert.cooked( 'a "**hello**"', diff --git a/app/assets/javascripts/pretty-text/engines/discourse-markdown/anchor.js b/app/assets/javascripts/pretty-text/engines/discourse-markdown/anchor.js index 4ac19201e62..78027d6f2f1 100644 --- a/app/assets/javascripts/pretty-text/engines/discourse-markdown/anchor.js +++ b/app/assets/javascripts/pretty-text/engines/discourse-markdown/anchor.js @@ -39,7 +39,11 @@ export function setup(helper) { .replace(/^-+/, "") .replace(/-+$/, ""); - slug = `${slug || "heading"}-${++headingId}`; + if (slug.match(/^[^a-z]/)) { + slug = `h-${slug}`; + } + + slug = `${slug || "h"}-${++headingId}`; linkOpen.attrSet("name", slug); linkOpen.attrSet("class", "anchor");