Commit graph

890 commits

Author SHA1 Message Date
Damien Elmes
81b312ddd1 handle decks/notetypes with a duplicate name being sent in a sync
Typically caused by older clients, but could happen if the user added
the same name on different devices without syncing.

Also add an inactive test that was used to try track down this issue
and might be useful in the future.
2021-01-23 12:59:24 +10:00
Damien Elmes
744c096e6e (de)serialize Weekday directly
Re: discussion in https://github.com/ankitects/anki/pull/934
2021-01-22 12:12:57 +10:00
Damien Elmes
12a36a7dc7 handle non-chunked graves from AnkiDroid 2021-01-22 10:00:25 +10:00
Damien Elmes
5cd125e2c8 add missing file header 2021-01-21 10:31:34 +10:00
Damien Elmes
4890872c3a fix context in rated: search error message 2021-01-19 18:33:10 +10:00
Damien Elmes
2685e641ee 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
7eb78ecb16 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
Damien Elmes
57d32c6e4a have register_tag mutate the tag if it changes it, instead of copying 2021-01-19 12:37:51 +10:00
Damien Elmes
6b07984265 fix deck and tag normalization
The issue existed in the deck code as well; I've added a test for it.
2021-01-19 12:36:01 +10:00
Damien Elmes
db3f29ac30 Merge pull request #929 from abdnh/tag-case
Make tags match their parents case
2021-01-19 11:56:03 +10:00
Damien Elmes
de16039b48 tweaks to the parent matching behaviour
- move logic out of the storage layer - its job is only to read
and write data from the DB
- avoid the Result within a Result
- return the preferred case as an option, so we can avoid a copy
in the unchanged case
- return a Cow when normalizing, so we can avoid copying in the
unchanged case
- add tags directly in clear_unused_tags(), so we avoid doing
lookups for every tag in the tag list
2021-01-19 11:52:24 +10:00
abdo
ee32ec4d25 Make tags match their parents case
https://github.com/ankitects/anki/pull/900/#issuecomment-762018745
2021-01-19 02:29:09 +03:00
Henrik Giesel
9246698d4e Satisfy formatter 2021-01-19 00:17:30 +01:00
Henrik Giesel
346b7e7f45 Add firstWeekday to GraphsOut 2021-01-18 23:10:53 +01:00
Damien Elmes
d92ba2c246 Merge pull request #900 from abdnh/tagtree
Hierarchical tags
2021-01-18 16:36:22 +10:00
abdo
a6234d1b66 clear_tag() should be case-insensitive 2021-01-18 03:52:28 +03:00
Henrik Giesel
232f5b5e79 Adjust unit tests for new InvalidRatedEase 2021-01-18 00:05:20 +01:00
Henrik Giesel
df3995e688 Generalize InvalidRatedEase error for rated and prop:rated 2021-01-17 23:55:05 +01:00
Henrik Giesel
a15ed65b8e Use explicit unreachable in rust pattern matching 2021-01-17 22:18:12 +01:00
Henrik Giesel
6ace112cad Add resched to tags 2021-01-17 21:44:56 +01:00
Henrik Giesel
fb497ea2e6 Reintroduce false removed limits 2021-01-16 17:38:02 +01:00
Henrik Giesel
cb7df2c71f Change argument order of write_rated to be more in line with the logic 2021-01-16 15:24:22 +01:00
Henrik Giesel
915cde892b Lift the 365 limit from rated/resched searches 2021-01-16 15:08:15 +01:00
Henrik Giesel
682ab23482 Fix issues after rebasing 2021-01-16 13:07:35 +01:00
Henrik Giesel
216ca28cb2 Being overly correct with the review ids 2021-01-16 12:45:02 +01:00
Henrik Giesel
ac0c5a1d00 Fix formatting 2021-01-16 12:45:02 +01:00
Henrik Giesel
0c71487973 Pass in the the negative offset day to write_rated 2021-01-16 12:44:59 +01:00
Henrik Giesel
401796ffbe Port prop:rated to EaseKind 2021-01-16 12:44:03 +01:00
Henrik Giesel
c84a75b4a5 Implement functioning prop:rated 2021-01-16 12:42:08 +01:00
Henrik Giesel
6da38dc719 Add nonfunctional "prop:rated" as possible search query 2021-01-16 12:42:06 +01:00
Damien Elmes
b3f57754df use of 'self' in function name was confusing 2021-01-16 21:14:55 +10:00
Damien Elmes
ff8c8a3bca simplify unused tags and DB check
- backend routines should contain minimal logic, and should call
into a routine on the collection
- instead of copying the giant-string approach the Python code was taking,
we use a HashSet to keep track of seen tags as we loop through the
notes, which should be more efficient
2021-01-16 20:38:16 +10:00
Damien Elmes
7f4850659d no need for separate all_tags_sorted()
tag is the primary key, so sqlite will give it back to us in
sorted order already.
2021-01-16 19:46:58 +10:00
Damien Elmes
f41eb90c21 custom ord/partialeq is not required; fix clippy lint 2021-01-16 19:44:37 +10:00
Damien Elmes
1288191743 handle missing parent names with varying case
Also convert to \x1f before sorting, so that numbers (with have a lower
ascii order than '::') don't mess up the sort.
2021-01-16 19:42:25 +10:00
Damien Elmes
82f9143171 add a (currently failing) test for duplicate parent names 2021-01-16 19:04:25 +10:00
Damien Elmes
96bd39f13e 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
bdb7948406 Add resched error tests 2021-01-15 10:57:55 +01:00
RumovZ
b9f7643100 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
9d641bcb76 Include context in search error test 2021-01-15 09:09:54 +01:00
abdo
112aa44c90 Merge branch 'master' of https://github.com/ankitects/anki into tagtree 2021-01-15 01:12:01 +03:00
RumovZ
e0168c8216 Encode HTML entities in search errors 2021-01-14 23:02:39 +01:00
RumovZ
6f8a9ba2ff Add search context for certain error kinds 2021-01-14 22:40:07 +01:00
RumovZ
74c2ce8df1 Rename ParseErrorKind to SearchErrorKind 2021-01-14 22:00:52 +01:00
RumovZ
6cbb4b48b2 Add errorkind test 2021-01-14 19:10:12 +01:00
RumovZ
8c6fbd828d Add FailKinds for unopened/unclosed groups 2021-01-14 19:09:31 +01:00
RumovZ
ae22b78534 Make AnkiError::SearchError work with ParseError
Use mock ftl strings for now.
2021-01-14 11:14:55 +01:00
RumovZ
5e971759cf Fix text node parsers, add FailKind alias 2021-01-14 11:10:33 +01:00
abdo
b3b6351f74 Fix unicode tag sorting 2021-01-14 07:04:55 +03:00
abdo
dd3f0d44fe Remove Default impl of Tag 2021-01-14 07:04:55 +03:00