Simplify some filtering stuff, do not unescape empty strings.
This commit is contained in:
parent
5b063cf1af
commit
3940afe1e6
5 changed files with 15 additions and 21 deletions
|
@ -113,18 +113,13 @@ void FeedDownloader::updateOneFeed(Feed* feed) {
|
||||||
// Perform per-message filtering.
|
// Perform per-message filtering.
|
||||||
QJSEngine filter_engine;
|
QJSEngine filter_engine;
|
||||||
|
|
||||||
MessageFilter::initializeFilteringEngine(filter_engine);
|
|
||||||
|
|
||||||
// Create JavaScript communication wrapper for the message.
|
// Create JavaScript communication wrapper for the message.
|
||||||
MessageObject msg_obj(&database,
|
MessageObject msg_obj(&database,
|
||||||
feed->customId(),
|
feed->customId(),
|
||||||
feed->getParentServiceRoot()->accountId(),
|
feed->getParentServiceRoot()->accountId(),
|
||||||
feed->getParentServiceRoot()->labelsNode()->labels());
|
feed->getParentServiceRoot()->labelsNode()->labels());
|
||||||
|
|
||||||
// Register the wrapper.
|
MessageFilter::initializeFilteringEngine(filter_engine, &msg_obj);
|
||||||
auto js_object = filter_engine.newQObject(&msg_obj);
|
|
||||||
|
|
||||||
filter_engine.globalObject().setProperty("msg", js_object);
|
|
||||||
|
|
||||||
qDebugNN << LOGSEC_FEEDDOWNLOADER << "Setting up JS evaluation took " << tmr.nsecsElapsed() / 1000 << " microseconds.";
|
qDebugNN << LOGSEC_FEEDDOWNLOADER << "Setting up JS evaluation took " << tmr.nsecsElapsed() / 1000 << " microseconds.";
|
||||||
|
|
||||||
|
|
|
@ -79,10 +79,15 @@ void MessageFilter::setScript(const QString& script) {
|
||||||
m_script = script;
|
m_script = script;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageFilter::initializeFilteringEngine(QJSEngine& engine) {
|
void MessageFilter::initializeFilteringEngine(QJSEngine& engine, MessageObject* message_wrapper) {
|
||||||
engine.installExtensions(QJSEngine::Extension::ConsoleExtension);
|
engine.installExtensions(QJSEngine::Extension::ConsoleExtension);
|
||||||
engine.globalObject().setProperty("MSG_ACCEPT", int(FilteringAction::Accept));
|
engine.globalObject().setProperty("MSG_ACCEPT", int(FilteringAction::Accept));
|
||||||
engine.globalObject().setProperty("MSG_IGNORE", int(FilteringAction::Ignore));
|
engine.globalObject().setProperty("MSG_IGNORE", int(FilteringAction::Ignore));
|
||||||
|
|
||||||
|
// Register the wrapper.
|
||||||
|
auto js_object = engine.newQObject(message_wrapper);
|
||||||
|
|
||||||
|
engine.globalObject().setProperty("msg", js_object);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageFilter::setId(int id) {
|
void MessageFilter::setId(int id) {
|
||||||
|
|
|
@ -27,7 +27,7 @@ class MessageFilter : public QObject {
|
||||||
QString script() const;
|
QString script() const;
|
||||||
void setScript(const QString& script);
|
void setScript(const QString& script);
|
||||||
|
|
||||||
static void initializeFilteringEngine(QJSEngine& engine);
|
static void initializeFilteringEngine(QJSEngine& engine, MessageObject* message_wrapper);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_id;
|
int m_id;
|
||||||
|
|
|
@ -147,24 +147,14 @@ void FormMessageFiltersManager::loadFilter() {
|
||||||
void FormMessageFiltersManager::testFilter() {
|
void FormMessageFiltersManager::testFilter() {
|
||||||
// Perform per-message filtering.
|
// Perform per-message filtering.
|
||||||
QJSEngine filter_engine;
|
QJSEngine filter_engine;
|
||||||
|
|
||||||
MessageFilter::initializeFilteringEngine(filter_engine);
|
|
||||||
|
|
||||||
QSqlDatabase database = qApp->database()->connection(metaObject()->className());
|
QSqlDatabase database = qApp->database()->connection(metaObject()->className());
|
||||||
|
|
||||||
// Create JavaScript communication wrapper for the message.
|
|
||||||
MessageObject msg_obj(&database, QString::number(NO_PARENT_CATEGORY), NO_PARENT_CATEGORY, {});
|
MessageObject msg_obj(&database, QString::number(NO_PARENT_CATEGORY), NO_PARENT_CATEGORY, {});
|
||||||
|
auto* fltr = selectedFilter();
|
||||||
// Register the wrapper.
|
|
||||||
auto js_object = filter_engine.newQObject(&msg_obj);
|
|
||||||
|
|
||||||
filter_engine.globalObject().setProperty("msg", js_object);
|
|
||||||
|
|
||||||
Message msg = testingMessage();
|
Message msg = testingMessage();
|
||||||
|
|
||||||
msg_obj.setMessage(&msg);
|
MessageFilter::initializeFilteringEngine(filter_engine, &msg_obj);
|
||||||
|
|
||||||
auto* fltr = selectedFilter();
|
msg_obj.setMessage(&msg);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
FilteringAction decision = fltr->filterMessage(&filter_engine);
|
FilteringAction decision = fltr->filterMessage(&filter_engine);
|
||||||
|
|
|
@ -70,6 +70,10 @@ QString WebFactory::stripTags(QString text) {
|
||||||
}
|
}
|
||||||
|
|
||||||
QString WebFactory::unescapeHtml(const QString& html) {
|
QString WebFactory::unescapeHtml(const QString& html) {
|
||||||
|
if (html.isEmpty()) {
|
||||||
|
return html;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_htmlNamedEntities.isEmpty()) {
|
if (m_htmlNamedEntities.isEmpty()) {
|
||||||
generateUnescapes();
|
generateUnescapes();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue