mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-14 22:42:14 -07:00
Fix multi-word type matching in card filters
Add phrase matching to StringValue before word-based fallback. Enables searches like t:"time lord" for multi-word creature types.
This commit is contained in:
parent
62c02e3fce
commit
d73445dde5
1 changed files with 14 additions and 4 deletions
|
|
@ -187,16 +187,26 @@ static void setupParserRules()
|
||||||
|
|
||||||
return QString::fromStdString(std::string(sv.sv())).toLower();
|
return QString::fromStdString(std::string(sv.sv())).toLower();
|
||||||
};
|
};
|
||||||
|
|
||||||
search["StringValue"] = [](const peg::SemanticValues &sv) -> StringMatcher {
|
search["StringValue"] = [](const peg::SemanticValues &sv) -> StringMatcher {
|
||||||
|
// Extract common matching logic
|
||||||
|
auto createMatcher = [](const QString &target) -> std::function<bool(const QString &)> {
|
||||||
|
return [target](const QString &s) -> bool {
|
||||||
|
if (s.contains(target, Qt::CaseInsensitive)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return s.split(" ").contains(target, Qt::CaseInsensitive);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
if (sv.choice() == 0) {
|
if (sv.choice() == 0) {
|
||||||
const auto target = std::any_cast<QString>(sv[0]);
|
const auto target = std::any_cast<QString>(sv[0]);
|
||||||
return [=](const QString &s) { return s.split(" ").contains(target, Qt::CaseInsensitive); };
|
return createMatcher(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto target = std::any_cast<QStringList>(sv[0]);
|
const auto target = std::any_cast<QStringList>(sv[0]);
|
||||||
return [=](const QString &s) {
|
return [=](const QString &s) -> bool {
|
||||||
auto containsString = [&s](const QString &str) { return s.split(" ").contains(str, Qt::CaseInsensitive); };
|
return std::any_of(target.begin(), target.end(), [&](const QString &str) { return createMatcher(str)(s); });
|
||||||
return std::any_of(target.begin(), target.end(), containsString);
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue