From 5b2a526f2a15c1163640a75460a012b72b4753d0 Mon Sep 17 00:00:00 2001 From: Mimi <1119186082@qq.com> Date: Tue, 11 Jul 2023 16:41:07 +0800 Subject: [PATCH] feat: use unescaped heading text --- lib/renderer.js | 16 ++++++++-------- test/index.js | 8 ++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/renderer.js b/lib/renderer.js index feb0f7c..7b8f769 100644 --- a/lib/renderer.js +++ b/lib/renderer.js @@ -5,7 +5,7 @@ const { marked } = require('marked'); let JSDOM, createDOMPurify; -const { encodeURL, slugize, stripHTML, url_for, isExternalLink, escapeHTML: escape } = require('hexo-util'); +const { encodeURL, slugize, stripHTML, url_for, isExternalLink, escapeHTML: escape, unescapeHTML: unescape } = require('hexo-util'); const MarkedRenderer = marked.Renderer; const MarkedTokenizer = marked.Tokenizer; const { basename, dirname, extname, join } = require('path').posix; @@ -13,7 +13,7 @@ const rATag = /]+\s+?)?href=["'](?:#)([^<>"']+)["'][^<>]*>/i; const rDlSyntax = /(?:^|\s)(\S.+)
:\s+(\S.+)/; const anchorId = (str, transformOption) => { - return slugize(str.trim(), {transform: transformOption}); + return slugize(stripHTML(unescape(str)).trim(), { transform: transformOption }); }; class Renderer extends MarkedRenderer { @@ -33,13 +33,13 @@ class Renderer extends MarkedRenderer { } const transformOption = modifyAnchors; - let id = anchorId(stripHTML(text), transformOption); + let id = anchorId(text, transformOption); const headingId = _headingId; const anchorAliasOpt = anchorAlias && text.startsWith('1.1 aaa/bbb'); + }); + describe('anchorAlias', () => { beforeEach(() => { hexo.config.marked.anchorAlias = true; });