From 6a9f8d7181df11da938a800fa02361afa0eb04d9 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Wed, 18 Dec 2024 12:48:45 +0100 Subject: [PATCH] extract title --- .../network-web/gemini/geminiparser.cpp | 15 ++++++++++++--- src/librssguard/network-web/gemini/geminiparser.h | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/librssguard/network-web/gemini/geminiparser.cpp b/src/librssguard/network-web/gemini/geminiparser.cpp index fde8d78ab..af2c2940b 100644 --- a/src/librssguard/network-web/gemini/geminiparser.cpp +++ b/src/librssguard/network-web/gemini/geminiparser.cpp @@ -20,6 +20,7 @@ QString GeminiParser::geminiToHtml(const QByteArray& gemini_data) { static QRegularExpression exp_text(R"()"); QRegularExpressionMatch mtch; + QString title; for (const QString& line : lines) { if ((mtch = exp_pre.match(line)).hasMatch()) { @@ -32,7 +33,7 @@ QString GeminiParser::geminiToHtml(const QByteArray& gemini_data) { html += parseLink(mtch); } else if ((mtch = exp_heading.match(line)).hasMatch()) { - html += parseHeading(mtch); + html += parseHeading(mtch, title.isEmpty() ? &title : nullptr); } else if ((mtch = exp_list.match(line)).hasMatch()) { html += parseList(mtch); @@ -49,7 +50,10 @@ QString GeminiParser::geminiToHtml(const QByteArray& gemini_data) { } } - return html; + return QSL("" + "%1" + "%2" + "").arg(title, html); } QString GeminiParser::parseLink(const QRegularExpressionMatch& mtch) const { @@ -59,10 +63,15 @@ QString GeminiParser::parseLink(const QRegularExpressionMatch& mtch) const { return QSL("

🔗 %2

\n").arg(link, name.isEmpty() ? link : name); } -QString GeminiParser::parseHeading(const QRegularExpressionMatch& mtch) const { +QString GeminiParser::parseHeading(const QRegularExpressionMatch& mtch, QString* clean_header) const { int level = mtch.captured(1).size(); QString header = mtch.captured(2); + if (!header.isEmpty() && clean_header != nullptr) { + clean_header->clear(); + clean_header->append(header); + } + return QSL("%2\n").arg(QString::number(level), header); } diff --git a/src/librssguard/network-web/gemini/geminiparser.h b/src/librssguard/network-web/gemini/geminiparser.h index af423076e..84732a368 100644 --- a/src/librssguard/network-web/gemini/geminiparser.h +++ b/src/librssguard/network-web/gemini/geminiparser.h @@ -12,7 +12,7 @@ class GeminiParser { private: QString parseLink(const QRegularExpressionMatch& mtch) const; - QString parseHeading(const QRegularExpressionMatch& mtch) const; + QString parseHeading(const QRegularExpressionMatch& mtch, QString *clean_header = nullptr) const; QString parseQuote(const QRegularExpressionMatch& mtch) const; QString parseList(const QRegularExpressionMatch& mtch) const; QString parseTextInNormalMode(const QString& line) const;