Commit graph

106 commits

Author SHA1 Message Date
Damien Elmes
64ebc32b3d tidy up Rust imports
rustfmt can do this automatically, but only when run with a nightly
toolchain, so it needs to be manually done for now - see rslib/rusfmt.toml
2021-04-18 18:38:54 +10:00
Damien Elmes
094e4ad461 crate::err -> crate::error 2021-04-01 16:07:13 +10:00
Damien Elmes
cfac40febc switch NoteType to Notetype
When used as a variable, we were typically calling it a 'notetype', not
a 'note type'.
2021-03-27 22:03:19 +10:00
Damien Elmes
561d160590 fix some clippy lints in tests 2021-03-27 20:44:31 +10:00
Damien Elmes
dc81a7fed0 use mixed case for abbreviations in Rust code
So, this is fun. Apparently "DeckId" is considered preferable to the
"DeckID" were were using until now, and the latest clippy will start
warning about it. We could of course disable the warning, but probably
better to bite the bullet and switch to the naming that's generally
considered best.
2021-03-27 19:53:33 +10:00
Damien Elmes
586ea07869 avoid wrapping outermost search in parens 2021-02-12 09:30:21 +10:00
Damien Elmes
59ccfe5918 more search bikeshedding
While implementing the overdue search, I realised it would be nice to
be able to construct a search string with OR and NOT searches without
having to construct each part individually with build_search_string().

Changes:

- Extends SearchTerm to support a text search, which will be parsed
by the backend. This allows us to do things like wrap text in a group
or NOT node.
- Because SearchTerm->Node conversion can now fail with a parsing error,
it's switched over to TryFrom
- Switch concatenate_searches and replace_search_term to use SearchTerms,
so that they too don't require separate string building steps.
- Remove the unused normalize_search()
- Remove negate_search, as this is now an operation on a Node, and
users can wrap their search in SearchTerm(negated=...)
- Remove the match_any and negate args from build_search_string

Having done all this work, I've just realised that perhaps the original
JSON idea was more feasible than I first thought - if we wrote it out
to a string and re-parsed it, we would be able to leverage the existing
checks that occur at parsing stage.
2021-02-11 17:11:17 +10:00
Damien Elmes
242b4ea505 switch search parser to using owned values
I was a bit too enthusiastic with using borrowed values in structs
earlier on in the Rust porting. In this case any performance gains are
dwarfed by the cost of querying the DB, and using owned values here
simplifies the code, and will make it easier to parse a fragment in
the From<SearchTerm> impl.
2021-02-11 12:19:36 +10:00
Damien Elmes
8852359fa9 expose the ability to create search groups 2021-02-11 11:21:33 +10:00
RumovZ
692aa16f6b Rename EaseKind to RatingKind 2021-01-30 19:03:50 +01:00
RumovZ
da6f3b7e76 Fix nid search test 2021-01-28 16:29:34 +01:00
RumovZ
bc52a54dfc Add nid filter on backend 2021-01-28 16:19:55 +01:00
Damien Elmes
44cde24679 fix context in rated: search error message 2021-01-19 18:33:10 +10:00
Damien Elmes
d273ebb756 more parsing error tweaks
The majority of the error checking can now be delegated to routines
like parse_f32(), parse_negative_i32() and so on, instead of creating
specific error messages for each type.
2021-01-19 15:50:26 +10:00
Damien Elmes
0b83efb63e simplify write_props() and associated translations
This is a work in progress; see associated PR discussion to follow.
2021-01-19 12:40:16 +10:00
Henrik Giesel
84c997fa4d Adjust unit tests for new InvalidRatedEase 2021-01-18 00:05:20 +01:00
Henrik Giesel
bdc6494c79 Generalize InvalidRatedEase error for rated and prop:rated 2021-01-17 23:55:05 +01:00
Henrik Giesel
2b45ef22a5 Use explicit unreachable in rust pattern matching 2021-01-17 22:18:12 +01:00
Henrik Giesel
bc81165be4 Add resched to tags 2021-01-17 21:44:56 +01:00
Henrik Giesel
947260e4aa Reintroduce false removed limits 2021-01-16 17:38:02 +01:00
Henrik Giesel
112e7f577e Lift the 365 limit from rated/resched searches 2021-01-16 15:08:15 +01:00
Henrik Giesel
47542f97e5 Fix issues after rebasing 2021-01-16 13:07:35 +01:00
Henrik Giesel
88c75d73b6 Pass in the the negative offset day to write_rated 2021-01-16 12:44:59 +01:00
Henrik Giesel
3788cb8890 Port prop:rated to EaseKind 2021-01-16 12:44:03 +01:00
Henrik Giesel
ce55dc4a75 Add nonfunctional "prop:rated" as possible search query 2021-01-16 12:42:06 +01:00
Damien Elmes
9686cd99ec search error tweaks
- use markdown instead of HTML, to make editing and translating easier
- use a shared prefix
- a few very minor wording tweaks
- we don't need to translate undocumented command errors
- share a string for positive number of days
- share a string for invalid property and state arguments, and avoid
listing them out

Related discussion: https://github.com/ankitects/anki/pull/922
2021-01-16 15:59:19 +10:00
RumovZ
5b03d1e2c8 Add resched error tests 2021-01-15 10:57:55 +01:00
RumovZ
cb4a103bb1 Merge branch 'master' into search-errors
Add error support for new resched node, update rated error.
2021-01-15 10:50:02 +01:00
RumovZ
c8f0961c6c Include context in search error test 2021-01-15 09:09:54 +01:00
RumovZ
182abfe66d Encode HTML entities in search errors 2021-01-14 23:02:39 +01:00
RumovZ
2a2ac38a1b Add search context for certain error kinds 2021-01-14 22:40:07 +01:00
RumovZ
5f05ca2548 Rename ParseErrorKind to SearchErrorKind 2021-01-14 22:00:52 +01:00
RumovZ
6af1852611 Add errorkind test 2021-01-14 19:10:12 +01:00
RumovZ
8f754e1525 Add FailKinds for unopened/unclosed groups 2021-01-14 19:09:31 +01:00
RumovZ
0b73110f82 Make AnkiError::SearchError work with ParseError
Use mock ftl strings for now.
2021-01-14 11:14:55 +01:00
RumovZ
4afb476f04 Fix text node parsers, add FailKind alias 2021-01-14 11:10:33 +01:00
RumovZ
d9bb20ac24 Expect backslashes to be escaped in dupe: text 2021-01-14 10:42:37 +10:00
RumovZ
f4cfccfc0a Fix writing dupe nodes
Rename comments and dupe functions on the backend accordingly to avoid
further confusion.
2021-01-14 10:42:37 +10:00
RumovZ
3aa15a7139 Optimise term parsers 2021-01-13 14:15:57 +01:00
RumovZ
447ff6931c Move parse errors, add helper func for parse fail 2021-01-13 13:23:25 +01:00
Henrik Giesel
c0ec21b139 Rename EaseKind values 2021-01-13 11:41:48 +01:00
RumovZ
b89381ac95 Fix top-level search errorkinds 2021-01-12 17:32:26 +01:00
RumovZ
d00c54aacf Switch parser to custom erros and results 2021-01-12 10:43:12 +01:00
Henrik Giesel
81d851610e Coerce resched:days as well 2021-01-11 17:25:42 +01:00
Henrik Giesel
7a7152fe27 Remove EaseKind impl in favor of transforming to sql in function 2021-01-11 17:10:17 +01:00
Henrik Giesel
cbfe14ef4f Introduce "resched:n" instead of 0 and a flag for "rated" 2021-01-11 16:40:30 +01:00
Henrik Giesel
7e58660aab Modify default behavior of rated searches to exclude manual 2021-01-11 16:40:30 +01:00
Damien Elmes
401d5dd9cc
Merge pull request #917 from hgiesel/querynozero3
Coerce added/edited:0 to 1, Constrain rated:n to 1-365
2021-01-11 16:24:12 +10:00
Henrik Giesel
8f01887fe7 Remove coercion in write_rated 2021-01-10 16:23:53 +01:00
Henrik Giesel
87bc1e69b0 Coerce added/edited:0 to 1, constrain rated:n to 1 <= 365 2021-01-10 16:16:17 +01:00