Fix nbsp C++.

This commit is contained in:
Martin Rotter 2020-11-07 15:51:22 +01:00
parent c08f76a934
commit 951330bbaa
7 changed files with 21 additions and 6 deletions

View file

@ -3572,10 +3572,6 @@ Tiny Tiny RSS is an open source web-based news feed (RSS/Atom) reader and aggreg
At least API level %1 is required.</translation> At least API level %1 is required.</translation>
</message> </message>
<message>
<source>Standard online feeds (RSS/RDF/ATOM)</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>This service offers integration with standard online RSS/RDF/ATOM feeds and podcasts.</source> <source>This service offers integration with standard online RSS/RDF/ATOM feeds and podcasts.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -3615,6 +3611,10 @@ version by clicking this popup notification.</source>
<source>Cannot insert message filter, because current database cannot return last inserted row ID.</source> <source>Cannot insert message filter, because current database cannot return last inserted row ID.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Standard online feeds (RSS/ATOM/JSON)</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RecycleBin</name> <name>RecycleBin</name>

View file

@ -116,8 +116,19 @@ RSS Guard is modular application which supports plugins. It offers well-maintain
All plugins share almost all core RSS Guard's features, including labels, recycle bins or newspaper view. They are implemented in a very transparent way, making it easy to maintain them or add new ones. All plugins share almost all core RSS Guard's features, including labels, recycle bins or newspaper view. They are implemented in a very transparent way, making it easy to maintain them or add new ones.
Usually, plugins have some exclusive functionality, for example Gmail plugin allows user to send e-mail messages. This extra functionality is always accessible via plugin's context menu and also via main menu.
<img src="images/gmail-context-menu.png" width="80%">
If there is interest in other plugins, you might write one yourself or if many people are interested then I might write it for you, even commercially if we make proper arrangements. If there is interest in other plugins, you might write one yourself or if many people are interested then I might write it for you, even commercially if we make proper arrangements.
### Features found exclusively in `standard RSS` plugin
Standard plugin in RSS Guard offers some features which are specific to it. Of course it supports all news syndication formats which are nowadays used:
* RSS 0.90, 0.91, 0.92, 1.0 (also know as *RDF*), 2.0.
* ATOM 1.0,
* [JSON](https://www.jsonfeed.org).
Standard plugin offers some extra features like export/import of OPML 2.0 files or fetching feed metadata.
## Message filtering ## Message filtering
RSS Guard supports _automagic_ message filtering. The filtering system is automatically triggered when new messages for each feed are downloaded. User can write scripts which perform filtering decisions. [**JavaScript with ECMA standard**](http://www.ecma-international.org/publications/standards/Ecma-262.htm) is supported. RSS Guard supports _automagic_ message filtering. The filtering system is automatically triggered when new messages for each feed are downloaded. User can write scripts which perform filtering decisions. [**JavaScript with ECMA standard**](http://www.ecma-international.org/publications/standards/Ecma-262.htm) is supported.

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View file

@ -95,6 +95,10 @@ void FeedDownloader::updateOneFeed(Feed* feed) {
<< feed->customId() << "' URL: '" << feed->url() << "' title: '" << feed->title() << "' in thread: '" << feed->customId() << "' URL: '" << feed->url() << "' title: '" << feed->title() << "' in thread: '"
<< QThread::currentThreadId() << "'. Operation took " << tmr.nsecsElapsed() / 1000 << " microseconds."; << QThread::currentThreadId() << "'. Operation took " << tmr.nsecsElapsed() / 1000 << " microseconds.";
msgs = QList<Message>::fromStdList(boolinq::from(msgs).where([](const Message& msg) {
return msg.m_title.contains("Essential PHP");
}).toStdList());
// Now, sanitize messages (tweak encoding etc.). // Now, sanitize messages (tweak encoding etc.).
for (auto& msg : msgs) { for (auto& msg : msgs) {
msg.m_accountId = acc_id; msg.m_accountId = acc_id;

View file

@ -78,7 +78,7 @@ void Message::sanitize() {
m_title = m_title m_title = m_title
// Remove non-breaking spaces. // Remove non-breaking spaces.
.replace(QRegularExpression(QSL("[\\u202F\\u00A0 ]")), QSL(" ")) .replace(QRegularExpression(QSL("[ \u202F\u00A0 ]")), QSL(" "))
// Shrink consecutive whitespaces. // Shrink consecutive whitespaces.
.replace(QRegularExpression(QSL("[\\s]{2,}")), QSL(" ")) .replace(QRegularExpression(QSL("[\\s]{2,}")), QSL(" "))

View file

@ -12,7 +12,7 @@ bool StandardServiceEntryPoint::isSingleInstanceService() const {
} }
QString StandardServiceEntryPoint::name() const { QString StandardServiceEntryPoint::name() const {
return QObject::tr("Standard online feeds (RSS/RDF/ATOM)"); return QObject::tr("Standard online feeds (RSS/ATOM/JSON)");
} }
QString StandardServiceEntryPoint::description() const { QString StandardServiceEntryPoint::description() const {