summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/cold-bears-sneeze.md5
-rw-r--r--packages/markdown/remark/src/rehype-collect-headers.ts6
-rw-r--r--packages/markdown/remark/test/expressions.test.js2
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>'
);
});