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