Commit Graph

9 Commits

Author SHA1 Message Date
4489d513be migrate to std::ranges
Move the various seq_ functions, as well as std::(stable_)sort,
std::accumulate, std::transform, std::find, std::find_if to their C++20
std::ranges counterparts.
2026-08-20 15:05:31 -07:00
500bf400c3 mu-query-parser: handle corner case / complexity
Some improvements:

- Fix or/xor chains (use left-associativity).
- Fix quote handling
- Make parsing O(n) rather than quadratic; limit recursion depth

And update tests.
2026-08-20 15:05:30 -07:00
86464cd083 modernization: tweaks for c++20
Update various places for what we can do with C++20:

- ends_with / starts_with
- std::to_array
- using instead of typedef
- designated initializers
- "[[maybe_unused]]" instead of G_GNUC_UNUSED

Also remove some unnecessary 'static'
2026-08-20 15:05:30 -07:00
e6e852b7e0 lib: improve error checking 2026-08-20 15:05:28 -07:00
c0253e075e mu-query-parser: update comment 2026-08-20 15:05:28 -07:00
b771fd6394 query-parser: handle naked NOT, add tests
We weren't correctly expanding "naked NOT" -> AND_NOT

Fixes #2559.
2023-09-21 19:29:59 +03:00
b5b90a0673 query-parser: 'not' should take units
NOT should bind more tightly.
2023-09-19 22:11:18 +03:00
5bda8c321b query: move phrasification to mu-query-parser
Do the "phrasification" for matching fields later during query parsing;
this allows for handling combination fields correctly.

Also match both the normal term and the "phrase term", so we catch more
cases. Update/extend unit tests.

This fixes the "kata-container" issue also for body test.

Fixes #2167.
2023-09-17 18:11:21 +03:00
a9bd6e69d3 lib: implement new query parser
Implement a new query parser; the results should be very similar to the
old one, but it adds an Sexp middle-representation, so users can see how
a query is interpreted.
2023-09-09 11:59:59 +03:00