extract title
This commit is contained in:
parent
e80f17d724
commit
6a9f8d7181
2 changed files with 13 additions and 4 deletions
|
@ -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("<html>"
|
||||
"<head><title>%1</title></head>"
|
||||
"<body>%2</body>"
|
||||
"</html>").arg(title, html);
|
||||
}
|
||||
|
||||
QString GeminiParser::parseLink(const QRegularExpressionMatch& mtch) const {
|
||||
|
@ -59,10 +63,15 @@ QString GeminiParser::parseLink(const QRegularExpressionMatch& mtch) const {
|
|||
return QSL("<p>🔗 <a href=\"%1\">%2</a></p>\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("<h%1>%2</h%1>\n").arg(QString::number(level), header);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue