mirror of https://github.com/kiwix/libkiwix.git
Use a macro to write the filters.
This commit is contained in:
parent
7846b45bef
commit
49aa0fbb9f
|
@ -466,23 +466,26 @@ Filter& Filter::query(std::string query)
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ACTIVE(X) (activeFilters & (X))
|
#define ACTIVE(X) (activeFilters & (X))
|
||||||
|
#define FILTER(TAG, TEST) if (ACTIVE(TAG) && !(TEST)) { return false; }
|
||||||
bool Filter::accept(const Book& book) const
|
bool Filter::accept(const Book& book) const
|
||||||
{
|
{
|
||||||
auto local = !book.getPath().empty();
|
auto local = !book.getPath().empty();
|
||||||
if (ACTIVE(_LOCAL) && !local)
|
FILTER(_LOCAL, local)
|
||||||
return false;
|
FILTER(_NOLOCAL, !local)
|
||||||
if (ACTIVE(_NOLOCAL) && local)
|
|
||||||
return false;
|
|
||||||
auto valid = book.isPathValid();
|
auto valid = book.isPathValid();
|
||||||
if (ACTIVE(_VALID) && !valid)
|
FILTER(_VALID, valid)
|
||||||
return false;
|
FILTER(_NOVALID, !valid)
|
||||||
if (ACTIVE(_NOVALID) && valid)
|
|
||||||
return false;
|
|
||||||
auto remote = !book.getUrl().empty();
|
auto remote = !book.getUrl().empty();
|
||||||
if (ACTIVE(_REMOTE) && !remote)
|
FILTER(_REMOTE, remote)
|
||||||
return false;
|
FILTER(_NOREMOTE, !remote)
|
||||||
if (ACTIVE(_NOREMOTE) && remote)
|
|
||||||
return false;
|
FILTER(MAXSIZE, book.getSize() <= _maxSize)
|
||||||
|
FILTER(LANG, book.getLanguage() == _lang)
|
||||||
|
FILTER(_PUBLISHER, book.getPublisher() == _publisher)
|
||||||
|
FILTER(_CREATOR, book.getCreator() == _creator)
|
||||||
|
|
||||||
if (ACTIVE(ACCEPTTAGS)) {
|
if (ACTIVE(ACCEPTTAGS)) {
|
||||||
if (!_acceptTags.empty()) {
|
if (!_acceptTags.empty()) {
|
||||||
auto vBookTags = split(book.getTags(), ";");
|
auto vBookTags = split(book.getTags(), ";");
|
||||||
|
@ -505,18 +508,6 @@ bool Filter::accept(const Book& book) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ACTIVE(MAXSIZE) && book.getSize() > _maxSize)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (ACTIVE(LANG) && book.getLanguage() != _lang)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (ACTIVE(_PUBLISHER) && book.getPublisher() != _publisher)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (ACTIVE(_CREATOR) && book.getCreator() != _creator)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if ( ACTIVE(QUERY)
|
if ( ACTIVE(QUERY)
|
||||||
&& !(matchRegex(book.getTitle(), "\\Q" + _query + "\\E")
|
&& !(matchRegex(book.getTitle(), "\\Q" + _query + "\\E")
|
||||||
|| matchRegex(book.getDescription(), "\\Q" + _query + "\\E")))
|
|| matchRegex(book.getDescription(), "\\Q" + _query + "\\E")))
|
||||||
|
|
Loading…
Reference in New Issue