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
Damien Elmes
4a4aef3972
Merge pull request #959 from Arthur-Milchior/AGPL
...
NF: add AGPL licence missing in some file
2021-02-01 12:46:59 +10:00
Arthur Milchior
8b5ae7d7c5
NF: add AGPL licence missing in some file
...
I noticed it when I looked at some files now used in AnkiDroid, wanting to be sure we clearly indicate that we have
AGPLv3 code linked in the app
2021-01-31 21:50:21 +01: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
Damien Elmes
318cc01c73
Merge pull request #900 from abdnh/tagtree
...
Hierarchical tags
2021-01-18 16:36:22 +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
e7660113ce
Change argument order of write_rated to be more in line with the logic
2021-01-16 15:24:22 +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
908e0a375c
Being overly correct with the review ids
2021-01-16 12:45:02 +01:00
Henrik Giesel
8f3c63bf0b
Fix formatting
2021-01-16 12:45:02 +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
b57d0da12a
Implement functioning prop:rated
2021-01-16 12:42:08 +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
abdo
e018ea94b6
Merge branch 'master' of https://github.com/ankitects/anki into tagtree
2021-01-15 01:12:01 +03: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
9f7170ac0f
Change "between 1 and 4" to "> 0"
2021-01-13 11:44:54 +01:00
Henrik Giesel
c0ec21b139
Rename EaseKind values
2021-01-13 11:41:48 +01:00
abdo
72e8f9d640
Merge branch 'master' of https://github.com/ankitects/anki into tagtree
2021-01-12 23:31:58 +03:00
abdo
9a68d84483
Keep tags in human form and update the tags table structure
...
See https://github.com/ankitects/anki/pull/900#issuecomment-758284016
- Leave tag names alone and add the collapsed and config columns to the tags table.
- Update The DB check code to preserve the collapse state of used tags.
- Add a simple test for clearing tags and their children
2021-01-12 23:12:35 +03: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
5eb2c7b271
Satisfy rslib unit tests
2021-01-11 17:18:40 +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
0b955c3699
Fix formatting
2021-01-10 16:38:20 +01:00
Henrik Giesel
adf969d37f
Add a few rslib unit tests
2021-01-10 16:29:10 +01: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
Damien Elmes
4ba4e8ca78
Merge pull request #913 from RumovZ/fix-write-template
...
Fix ordinal case in write_template
2021-01-10 08:58:00 +10:00
RumovZ
f83553c82a
Merge branch 'master' into backend-filters
...
Adapt new formatting.
2021-01-09 19:03:43 +01:00
RumovZ
ca62f3ef80
Fix ordinal case in write_template
...
Internal card ordinals start at 0, so add 1 again when writing a
template search string from a parsed ordinal.
2021-01-09 17:30:12 +01:00
abdo
b276ce3dd5
Hierarchical tags
2021-01-09 17:10:13 +03:00
RumovZ
9ef691c06f
Provide filter searches through backend
2021-01-09 10:50:08 +01:00
Damien Elmes
56e4e2d518
reformat .sql files
2021-01-09 14:08:55 +10:00
Damien Elmes
97e3bfe1c0
Merge pull request #904 from hgiesel/propdue
...
Streamlining `is:due`, `prop:due`, and the FutureDue graph
2021-01-08 16:34:53 +10:00
Henrik Giesel
4c570785bb
Add comment about integer division
2021-01-07 20:10:25 +01:00
Henrik Giesel
04a56209c6
Restate rslib unit test
2021-01-07 19:56:36 +01:00
Henrik Giesel
155a59b80b
Search for Learn and PreviewRepeat cards when using prop:due
2021-01-07 19:01:10 +01:00
Henrik Giesel
795dcab370
Include PreviewRepeat cards in is:due
2021-01-07 17:24:10 +01:00
RumovZ
76c16180ae
Add native enum for concatenate_search's separator
2021-01-07 12:50:57 +01:00
RumovZ
ebe535e42f
Add Position in PropertyKind match of writer.rs
2021-01-06 23:29:09 +01:00
RumovZ
6ee9e4f58c
Merge branch 'master' of https://github.com/ankitects/anki into norm-search
2021-01-06 20:57:24 +01:00
RumovZ
d9f7d2e70d
Add tests for writer.rs
...
Also minor adjustments to concatenate_searches.
2021-01-06 19:39:34 +01:00
RumovZ
84061a6e6d
Implement replace_search_term
2021-01-06 14:03:43 +01:00
RumovZ
79d0b5496b
Implement concatenate_searches
...
Fix minor stuff in writer.rs.
2021-01-06 14:00:47 +01:00
RumovZ
713db05f27
Implement negate_search
2021-01-06 13:57:35 +01:00
Henrik Giesel
59cb901a3b
Change meaning of "is:learn" to filter on type, not queue
2021-01-05 17:36:55 +01:00
abdo
dc51dc6795
Rename prop:order to prop:pos
2021-01-02 13:35:10 +03:00
abdo
0ad4619833
Support prop:order to search for new cards by order
2021-01-01 04:36:51 +03:00
Damien Elmes
a0b4948760
fix clippy error in unit test
2020-12-31 09:48:05 +10:00
RumovZ
95b4e4cc84
Make function names more explicit and add docs
2020-12-29 11:18:49 +01:00
RumovZ
62753290d8
Make normalized search syntax more explicit
...
Also fix a bug with NoCombining and WordBoundary searches.
2020-12-29 11:06:53 +01:00
RumovZ
ecd04f8a59
Don't escape isolated -
2020-12-22 11:52:17 +01:00
RumovZ
873e96b60a
Fix format and tests
2020-12-22 11:32:53 +01:00
RumovZ
5b24d9e4a6
Expose search writer
2020-12-22 11:06:55 +01:00
RumovZ
fcc87d16ea
Add search writer
2020-12-22 11:04:38 +01:00
cecini
d37ea0f5f7
Update rslib dep nom
2020-12-15 08:19:52 +00:00
Damien Elmes
a9ea8e11a2
fix filtered decks not honoring sort order
...
https://forums.ankiweb.net/t/2-1-36-filtered-decks-bug/5649/
2020-12-09 22:50:49 +10:00
Damien Elmes
009906d0c2
fix duplicate search not checking first field
...
Thanks to abdo for the initial solution. Closes #838
2020-11-30 09:27:10 +10:00
RumovZ
540d52c471
Comment fix
2020-11-27 22:12:36 +01:00
RumovZ
0c9ad7e952
Revert implementation of r: prefix
2020-11-27 22:10:37 +01:00
Damien Elmes
780f32b8ae
fix new Clippy lints
2020-11-25 09:12:19 +10:00
Damien Elmes
3923f56cbf
fix clippy lints
2020-11-24 20:13:05 +10:00
RumovZ
785540bddc
Revert changes to normalisation handling
...
Handle norm calls individually in write_search_node_to_sql again.
2020-11-18 23:46:27 +01:00
RumovZ
6e51bad7db
Implement the prefix r: to search for raw input
2020-11-18 22:26:51 +01:00
RumovZ
c185fb966b
Merge branch 'master' into rework-search-parser
...
Conflicts:
rslib/src/search/sqlwriter.rs
2020-11-18 09:04:04 +01:00
RumovZ
b09a398d2d
Make - escapable
...
Treat unescaped - as before but make it escapable with \ to distinguish
the literal from the negator.
2020-11-17 18:38:27 +01:00
RumovZ
8c02c6e205
Split unescaping between parser and writer
...
* Unescape wildcards in writer instead of parser.
* Move text conversion functions to text.rs.
* Implicitly norm when converting text.
* Revert to using collection when comparing tags but add escape support.
2020-11-17 12:49:37 +01:00
abdo
358d0f957e
Make dupe search operate on non-stripped text
...
See https://github.com/ankitects/anki/pull/822/
2020-11-16 04:01:04 +03:00
RumovZ
7c5cf6d18b
Use enforced re to parse deck
...
Fix write_deck not recognising escaped deck name separators:
\:\: -> ::
2020-11-15 21:32:36 +01:00
RumovZ
a6628709c5
Annotate RegEx for invalid-escape check
2020-11-15 14:22:16 +01:00
RumovZ
a16d271eb0
Extend tests for new search parsing
...
(Also fix indentation)
2020-11-15 12:00:20 +01:00
RumovZ
ae01a5b3a2
Fix escape check for escaped backslash
2020-11-15 11:57:11 +01:00
RumovZ
63cc877023
Move whitespace check for tags from to sqlwriter
...
Instead of not parsing a tag containing whitespace, check for spaces
when writing sql and if there are any, explicitly match nothing.
2020-11-15 11:54:21 +01:00
RumovZ
57787368a1
Always use regex for tag search
...
Don't distinguish between the glob and no-glob cases when comparing
tags but always use regexp. Thus, avoid problems with SQL wildcards in
registered tags.
2020-11-15 09:52:00 +01:00
RumovZ
9e53481003
Fix tests for new search parsing (and reformat)
2020-11-14 19:13:09 +01:00
RumovZ
836977aac8
Fix whitespace in write_tag and parser/whitespac0
2020-11-14 19:10:56 +01:00
RumovZ
3949996728
For deck searches, unescape quotes only
...
For now, revert to the old handling of deck names using text_to_re from
text.rs and have parser.rs only unescape quotes.
2020-11-14 19:06:37 +01:00
RumovZ
b186e61e54
Fix 'escaped' parser for empty string
...
Fix a bug where 'escaped' parsers (nom) accepted the empty
string by wrapping them in 'verify' parsers.
2020-11-14 18:28:24 +01:00
RumovZ
0cff65e5a8
Fix bugs and inconsistencies in the search parser
2020-11-12 17:27:50 +01:00
Andreas Reis
e68a40f13e
cleanup / renames
...
・ soundRegexps → sound_regexps
・ htmlRegexps → html_media_regexps
・ HTML_TAGS → HTML_MEDIA_TAGS
・ escapeImages → escape_media_filenames + alias
・ strip_html_preserving_image_filenames → strip_html_preserving_media_filenames
2020-11-10 14:53:04 +01:00
Damien Elmes
c96784c0eb
fix new clippy lints
2020-10-09 21:35:53 +10:00
Damien Elmes
955c1bafb9
fix * handling in unqualifed text as well
...
https://forums.ankiweb.net/t/anki-2-1-desktop-searching-with-only-when-limited-to-a-field/3789/4
2020-09-29 21:18:19 +10:00
Damien Elmes
7e872de875
fix escaping of * in field search
...
mentioned in
https://github.com/ankitects/anki/pull/769
2020-09-27 16:04:08 +10:00
Damien Elmes
d74cc2e9b0
stop is:due gathering learning cards that are not due yet
...
https://forums.ankiweb.net/t/how-to-avoid-rebuilding-filtered-decks-to-skip-learning-cards-steps/3551/
2020-09-21 11:41:54 +10:00
Damien Elmes
56ceb6ba76
set_deck()
2020-09-03 17:42:46 +10:00
Damien Elmes
9214c4a700
support did:[deck id] search
2020-09-03 16:43:22 +10:00
Damien Elmes
b65174a026
move card sorting and resetting to backend
2020-09-03 15:54:15 +10:00
Damien Elmes
8f9037cf0f
move filtered deck empty/fill to backend
...
emptying of individual card ids still to be done
2020-09-02 17:56:23 +10:00
Damien Elmes
ccfa989c62
move unbury/unsuspend routines into backend
2020-09-01 10:24:38 +10:00
Damien Elmes
ac6397ae9e
add separate sched/user bury searches, and fix bury enums
2020-09-01 10:24:38 +10:00
Damien Elmes
a7e254e81d
catch leading/trailing boolean operators
...
https://forums.ankiweb.net/t/is-it-only-me-anki-giving-corrupt-collection-error/2424/20
2020-08-27 09:59:29 +10:00
Damien Elmes
9e53c84a35
fix globs not working in bulk tag add/remove
2020-08-17 18:14:00 +10:00
Damien Elmes
01d20044e7
reject double comma in id list
...
https://forums.ankiweb.net/t/anki-2-1-29-and-below-2-small-bugs/1496
2020-07-29 13:05:34 +10:00
Damien Elmes
df319c7c58
is:review should include relearning cards
...
https://forums.ankiweb.net/t/anki-2-1-28-beta/629/36
This issue appears to have existed since the V2 scheduler was
introduced - the old Python search code was ignoring Relearn as well.
2020-07-09 11:07:50 +10:00
Damien Elmes
7cd02eea8f
supported edited:n
...
https://forums.ankiweb.net/t/feature-request-advanced-broswer-search-by-edited/268
2020-07-01 10:17:57 +10:00
Damien Elmes
d4cd4535e6
lint fixes
2020-06-29 15:53:56 +10:00
Damien Elmes
31a422cf85
fix partially quoted text not handling escaped quotes
...
https://forums.ankiweb.net/t/how-to-search-for-cards-containing-quotes/500/10
2020-06-29 15:48:01 +10:00
Damien Elmes
0cab26d40c
cards added graph
2020-06-29 15:48:01 +10:00
Damien Elmes
82568a1f3e
experiment with exposing raw card/revlog data to frontend
2020-06-29 15:48:00 +10:00
Damien Elmes
c77d017135
catch invalid regex in search
...
https://github.com/ankitects/anki/pull/652
2020-06-09 11:46:07 +10:00
Damien Elmes
08f1843b67
automatically omit notes or cards table when possible
2020-05-19 11:27:02 +10:00
Damien Elmes
9b1eee85d5
rename SortMode arg to match enum
2020-05-12 21:13:34 +10:00
Damien Elmes
7bab99d873
support disabling unicode normalization in notes
2020-05-12 21:13:34 +10:00
Damien Elmes
238441f2d9
use the backend for the deck due tree
...
- approx 3x faster on a large test deck
- counts are no longer capped to 1000 in the tree
2020-05-12 21:13:33 +10:00
Damien Elmes
8d17edc1e6
rework aux table sorting
...
Instead of inserting text into the aux table and sorting on the fly
(which does a binary sort), we insert the ids in unicase-sorted order,
and then sort based on the automatically assigned rowids - giving
us faster sorts, and proper unicase folding.
2020-05-12 21:13:33 +10:00
Damien Elmes
8246ba148e
fix case sensitivity of notetype/template searches
2020-05-12 21:13:33 +10:00
Damien Elmes
3339c404b4
update searching code to use decks table
2020-05-12 21:13:33 +10:00
Damien Elmes
f592672fa9
add separate decks table, and start on moving deck handling to Rust
...
The Python tests are passing, but there are still a number of issues
to work through, and the table/protobuf schema is not yet finalized.
2020-05-12 21:13:33 +10:00
Damien Elmes
83bcb084fe
template changes and card generation
...
Cloze cards are not yet supported, missing decks are not handled,
and more testing is still required.
2020-05-12 21:13:33 +10:00
Damien Elmes
a226f70733
cache notetypes
2020-05-12 21:13:33 +10:00
Damien Elmes
7c23deb562
add separate search_notes_only()
2020-05-12 21:13:33 +10:00
Damien Elmes
04f0ea8599
start work on field changes, and add search_cards to col
2020-05-12 21:13:33 +10:00
Damien Elmes
cc297f1dc6
move note db code to storage
2020-05-12 21:13:33 +10:00
Damien Elmes
9080f602b1
native struct for NoteField
...
ord is made optional so we can keep track of changes in the future
2020-05-12 21:13:33 +10:00
Damien Elmes
8cfb1fad44
use native struct for NoteType
2020-05-12 21:13:33 +10:00
Damien Elmes
32bc1e88eb
migrate the schema11 usages to new structs/sql queries
2020-05-12 21:13:33 +10:00
Damien Elmes
e2b978e7cb
move schema11 note type code into separate file
2020-05-12 21:13:33 +10:00
Damien Elmes
805a3a710e
split note types into separate tables
...
- store the config in protobuf instead of json
- still loading+saving in bulk for now
- code using the schema11 structs needs to be migrated
2020-05-12 21:13:33 +10:00
Damien Elmes
1de8d4baaf
fix a unit test
2020-05-08 17:27:41 +10:00
Damien Elmes
3f534b8c86
fix dupe search with included formatting
...
https://anki.tenderapp.com/discussions/ankidesktop/41286-2125-doesnt-show-duplicates
2020-05-08 15:26:45 +10:00