diff options
author | 2022-07-16 15:45:41 +0600 | |
---|---|---|
committer | 2022-07-18 22:21:56 -0700 | |
commit | ba11b33996d79c32da947986edb0f32dbcc04aaf (patch) | |
tree | 2611859694231eb797b895b573de0221b1a4da90 | |
parent | 4bb96ac8e5890a9a4320b1d5655e691ebf7924cd (diff) | |
download | astro-ba11b33996d79c32da947986edb0f32dbcc04aaf.tar.gz astro-ba11b33996d79c32da947986edb0f32dbcc04aaf.tar.zst astro-ba11b33996d79c32da947986edb0f32dbcc04aaf.zip |
Removes trailing dash from generated slugs in markdown (#3044)
* fixed header slugs in markdown if ends with a dash
* added changeset
* removes trailing dash only if slug was created
* updated test
* updated change level from patch to minor
-rw-r--r-- | .changeset/cold-bears-sneeze.md | 5 | ||||
-rw-r--r-- | packages/markdown/remark/src/rehype-collect-headers.ts | 6 | ||||
-rw-r--r-- | packages/markdown/remark/test/expressions.test.js | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/.changeset/cold-bears-sneeze.md b/.changeset/cold-bears-sneeze.md new file mode 100644 index 000000000..483d87cd3 --- /dev/null +++ b/.changeset/cold-bears-sneeze.md @@ -0,0 +1,5 @@ +--- +'@astrojs/markdown-remark': minor +--- + +fixed generated slugs in markdown that ends with a dash diff --git a/packages/markdown/remark/src/rehype-collect-headers.ts b/packages/markdown/remark/src/rehype-collect-headers.ts index f8cedd0d5..9b9a43730 100644 --- a/packages/markdown/remark/src/rehype-collect-headers.ts +++ b/packages/markdown/remark/src/rehype-collect-headers.ts @@ -53,7 +53,11 @@ export default function createCollectHeaders() { node as any ).value = `<${node.tagName} id={${node.properties.id}}>${raw}</${node.tagName}>`; } else { - node.properties.id = slugger.slug(text); + let slug = slugger.slug(text); + + if (slug.endsWith('-')) slug = slug.slice(0, -1); + + node.properties.id = slug; } } diff --git a/packages/markdown/remark/test/expressions.test.js b/packages/markdown/remark/test/expressions.test.js index db351f9d8..828f70561 100644 --- a/packages/markdown/remark/test/expressions.test.js +++ b/packages/markdown/remark/test/expressions.test.js @@ -54,7 +54,7 @@ describe('expressions', () => { chai .expect(code) .to.equal( - '<h1 id="-foo--is-a-shorthand-for--foo-foo-"><code is:raw>{ foo }</code> is a shorthand for <code is:raw>{ foo: foo }</code></h1>' + '<h1 id="-foo--is-a-shorthand-for--foo-foo"><code is:raw>{ foo }</code> is a shorthand for <code is:raw>{ foo: foo }</code></h1>' ); }); |