diff --git a/src/gui/rss/rsswidget.cpp b/src/gui/rss/rsswidget.cpp
index 9ddaece6b..4dea9d73c 100644
--- a/src/gui/rss/rsswidget.cpp
+++ b/src/gui/rss/rsswidget.cpp
@@ -57,8 +57,47 @@
namespace
{
void convertRelativeUrlToAbsolute(QString &html, const QString &baseUrl);
+
+ void convertRelativeUrlToAbsolute(QString &html, const QString &baseUrl)
+ {
+ const QRegularExpression rx {uR"(((]*?href|
]*?src)\s*=\s*["'])((https?|ftp):)?(\/\/[^\/]*)?(\/?[^\/"].*?)(["']))"_s
+ , QRegularExpression::CaseInsensitiveOption};
+
+ const QString normalizedBaseUrl = baseUrl.endsWith(u'/') ? baseUrl : baseUrl + u'/';
+ const QUrl url {normalizedBaseUrl};
+ const QString defaultScheme = url.scheme();
+ QRegularExpressionMatchIterator iter = rx.globalMatch(html);
+
+ while (iter.hasNext())
+ {
+ const QRegularExpressionMatch match = iter.next();
+ const QString scheme = match.captured(4);
+ const QString host = match.captured(5);
+ if (!scheme.isEmpty())
+ {
+ if (host.isEmpty())
+ break; // invalid URL, should never happen
+
+ // already absolute URL
+ continue;
+ }
+
+ QString relativePath = match.captured(6);
+ if (relativePath.startsWith(u'/'))
+ relativePath = relativePath.mid(1);
+
+ const QString absoluteUrl = !host.isEmpty()
+ ? QString(defaultScheme + u":" + host) : QString(normalizedBaseUrl + relativePath);
+ const QString fullMatch = match.captured(0);
+ const QString prefix = match.captured(1);
+ const QString suffix = match.captured(7);
+
+ html.replace(fullMatch, (prefix + absoluteUrl + suffix));
+ }
+ }
}
+
RSSWidget::RSSWidget(IGUIApplication *app, QWidget *parent)
: GUIApplicationComponent(app, parent)
, m_ui {new Ui::RSSWidget}
@@ -623,43 +662,3 @@ void RSSWidget::renderArticle(const RSS::Article *article) const
html += u"";
m_ui->textBrowser->setHtml(html);
}
-namespace
-{
- void convertRelativeUrlToAbsolute(QString &html, const QString &baseUrl)
- {
- const QRegularExpression rx {uR"(((]*?href|
]*?src)\s*=\s*["'])((https?|ftp):)?(\/\/[^\/]*)?(\/?[^\/"].*?)(["']))"_s
- , QRegularExpression::CaseInsensitiveOption};
-
- const QString normalizedBaseUrl = baseUrl.endsWith(u'/') ? baseUrl : baseUrl + u'/';
- const QUrl url {normalizedBaseUrl};
- const QString defaultScheme = url.scheme();
- QRegularExpressionMatchIterator iter = rx.globalMatch(html);
-
- while (iter.hasNext())
- {
- const QRegularExpressionMatch match = iter.next();
- const QString scheme = match.captured(4);
- const QString host = match.captured(5);
- if (!scheme.isEmpty())
- {
- if (host.isEmpty())
- break; // invalid URL, should never happen
-
- // already absolute URL
- continue;
- }
-
- QString relativePath = match.captured(6);
- if (relativePath.startsWith(u'/'))
- relativePath = relativePath.mid(1);
-
- const QString absoluteUrl = !host.isEmpty()
- ? QString(defaultScheme + u":" + host) : QString(normalizedBaseUrl + relativePath);
- const QString fullMatch = match.captured(0);
- const QString prefix = match.captured(1);
- const QString suffix = match.captured(7);
-
- html.replace(fullMatch, (prefix + absoluteUrl + suffix));
- }
- }
-}