Просмотр исходного кода

fix #263: Bug: Header ID duplicates

use markdown-it-toc-and-anchor-with-slugid
Yuki Takei 8 лет назад
Родитель
Сommit
f5fa0ccc5e
3 измененных файлов с 9 добавлено и 13 удалено
  1. 2 1
      package.json
  2. 4 9
      resource/js/util/markdown-it/toc-and-anchor.js
  3. 3 3
      yarn.lock

+ 2 - 1
package.json

@@ -98,7 +98,7 @@
     "markdown-it-named-headers": "^0.0.4",
     "markdown-it-plantuml": "^0.3.1",
     "markdown-it-task-lists": "^2.1.0",
-    "markdown-it-toc-and-anchor": "^4.1.2",
+    "markdown-it-toc-and-anchor-with-slugid": "^1.1.2",
     "md5": "^2.2.1",
     "method-override": "^2.3.10",
     "mkdirp": "~0.5.1",
@@ -134,6 +134,7 @@
     "toastr": "^2.1.2",
     "uglifycss": "^0.0.27",
     "url-join": "^4.0.0",
+    "uslug": "^1.0.4",
     "webpack": "^3.1.0",
     "webpack-bundle-analyzer": "^2.9.0",
     "webpack-merge": "~4.1.0",

+ 4 - 9
resource/js/util/markdown-it/toc-and-anchor.js

@@ -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()));
   }
 }

+ 3 - 3
yarn.lock

@@ -3693,9 +3693,9 @@ markdown-it-task-lists@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/markdown-it-task-lists/-/markdown-it-task-lists-2.1.0.tgz#4594f750f70df053d1dad68024388007c1d20783"
 
-markdown-it-toc-and-anchor@^4.1.2:
-  version "4.1.2"
-  resolved "https://registry.yarnpkg.com/markdown-it-toc-and-anchor/-/markdown-it-toc-and-anchor-4.1.2.tgz#b271f694a70bf719e6b728056d7bd931d364214d"
+markdown-it-toc-and-anchor-with-slugid@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/markdown-it-toc-and-anchor-with-slugid/-/markdown-it-toc-and-anchor-with-slugid-1.1.2.tgz#14d293ee530891107a13575407ede0376fb3666e"
   dependencies:
     clone "^2.1.0"
     uslug "^1.0.4"