aboutsummaryrefslogtreecommitdiff
path: root/src/renderers/htmlrenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderers/htmlrenderer.cpp')
-rw-r--r--src/renderers/htmlrenderer.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/renderers/htmlrenderer.cpp b/src/renderers/htmlrenderer.cpp
index 23f720e..c6e15ad 100644
--- a/src/renderers/htmlrenderer.cpp
+++ b/src/renderers/htmlrenderer.cpp
@@ -109,6 +109,10 @@ static void renderRecursive(RenderState & state, GumboNode const & node, int nes
bool process_header = false;
QString header_text;
+ // Fetch the original `id` attribute if any
+ char const * const header_id = getAttribute(element, "id");
+ QString const anchor = (header_id != nullptr) ? QString(header_id) : QString("header-%1").arg(state.header_count);
+
switch(element.tag) {
// Stripped tags
@@ -173,7 +177,7 @@ static void renderRecursive(RenderState & state, GumboNode const & node, int nes
process_header = true;
state.header_text = &header_text;
}
- stream += "<" + QString::fromUtf8(gumbo_normalized_tagname(element.tag)) + QString(" id=\"header-%1\">").arg(state.header_count);
+ stream += "<" + QString::fromUtf8(gumbo_normalized_tagname(element.tag)) + " id=\"" + anchor + "\">";
break;
default:
@@ -192,7 +196,6 @@ static void renderRecursive(RenderState & state, GumboNode const & node, int nes
QRegularExpression regex { "\\s+", QRegularExpression::DotMatchesEverythingOption };
QString const header = header_text.replace(regex, " ");
- QString const anchor = QString("header-%1").arg(state.header_count);
switch(element.tag) {
case GUMBO_TAG_H1: