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