From 0735764a34b7c7d88fe29b5ff6f3cb9719c11c16 Mon Sep 17 00:00:00 2001 From: Le Tan Date: Tue, 22 Dec 2020 19:54:25 +0800 Subject: [PATCH] remove heading sequence in header ID --- src/data/extra/web/js/markdownit.js | 5 ++++- src/data/extra/web/js/nodelinemapper.js | 2 +- src/data/extra/web/js/utils.js | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/data/extra/web/js/markdownit.js b/src/data/extra/web/js/markdownit.js index 7248227e..30d11f0a 100644 --- a/src/data/extra/web/js/markdownit.js +++ b/src/data/extra/web/js/markdownit.js @@ -317,7 +317,10 @@ class MarkdownIt extends VxWorker { } generateHeaderId(p_headerIds, p_str) { - let idBase = p_str.replace(/\s/g, '-').toLowerCase(); + // Remove leading heading sequence. + let regExp = Utils.headingSequenceRegExp(); + let idBase = p_str.replace(regExp, ''); + idBase = idBase.replace(/\s/g, '-').toLowerCase(); let id = idBase; let idx = 1; while (p_headerIds.has(id)) { diff --git a/src/data/extra/web/js/nodelinemapper.js b/src/data/extra/web/js/nodelinemapper.js index f509a907..fe9702a0 100644 --- a/src/data/extra/web/js/nodelinemapper.js +++ b/src/data/extra/web/js/nodelinemapper.js @@ -46,7 +46,7 @@ class NodeLineMapper { this.headingNodes = this.container.querySelectorAll("h1, h2, h3, h4, h5, h6"); let headings = []; let needSectionNumber = window.vxOptions.sectionNumberEnabled; - let regExp = /^\d(?:\.\d)*\.? /; + let regExp = Utils.headingSequenceRegExp(); for (let i = 0; i < this.headingNodes.length; ++i) { let node = this.headingNodes[i]; let headingContent = this.getHeadingContent(node); diff --git a/src/data/extra/web/js/utils.js b/src/data/extra/web/js/utils.js index 9f733676..4eaee62d 100644 --- a/src/data/extra/web/js/utils.js +++ b/src/data/extra/web/js/utils.js @@ -109,4 +109,8 @@ class Utils { } return true; } + + static headingSequenceRegExp() { + return /^\d(?:\.\d)*\.? /; + } }