|
|
@@ -1,3 +1,5 @@
|
|
|
+import uslug from 'uslug';
|
|
|
+
|
|
|
export default class TocAndAnchorConfigurer {
|
|
|
|
|
|
constructor(crowi, renderToc) {
|
|
|
@@ -6,13 +8,11 @@ export default class TocAndAnchorConfigurer {
|
|
|
}
|
|
|
|
|
|
configure(md) {
|
|
|
- md.use(require('markdown-it-toc-and-anchor').default, {
|
|
|
+ md.use(require('markdown-it-toc-and-anchor-with-slugid').default, {
|
|
|
anchorLinkBefore: false,
|
|
|
anchorLinkSymbol: '',
|
|
|
anchorLinkSymbolClassName: 'fa fa-link',
|
|
|
anchorClassName: 'revision-head-link',
|
|
|
- })
|
|
|
- .use(require('markdown-it-named-headers'), { // overwrite id defined by markdown-it-toc-and-anchor
|
|
|
slugify: this.customSlugify,
|
|
|
})
|
|
|
;
|
|
|
@@ -29,14 +29,9 @@ export default class TocAndAnchorConfigurer {
|
|
|
|
|
|
/**
|
|
|
* create Base64 encoded id
|
|
|
- * @see https://qiita.com/satokaz/items/64582da4640898c4bf42
|
|
|
* @param {string} header
|
|
|
*/
|
|
|
customSlugify(header) {
|
|
|
- return encodeURIComponent(header.trim()
|
|
|
- .toLowerCase()
|
|
|
- .replace(/[\]\[\!\"\#\$\%\&\'\(\)\*\+\,\.\/\:\;\<\=\>\?\@\\\^\_\{\|\}\~]/g, '')
|
|
|
- .replace(/\s+/g, '-')) // Replace spaces with hyphens
|
|
|
- .replace(/\-+$/, ''); // Replace trailing hyphen
|
|
|
+ return encodeURIComponent(uslug(header.trim()));
|
|
|
}
|
|
|
}
|