Commit graph

593 commits

Author SHA1 Message Date
Damien Elmes
3d0b4b4446 deck renaming tweaks
- normalize name prior to creating parents
- always mark modified

https://github.com/ankitects/anki/pull/831#issuecomment-730064858
2020-11-30 10:09:23 +10:00
Damien Elmes
00f827f976 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
6c3c617b64 Comment fix 2020-11-27 22:12:36 +01:00
RumovZ
59bbbd53b8 Revert implementation of r: prefix 2020-11-27 22:10:37 +01:00
Damien Elmes
775dae874d fix new Clippy lints 2020-11-25 09:12:19 +10:00
Damien Elmes
29b3ee13e8 fix clippy lints 2020-11-24 20:13:05 +10:00
Damien Elmes
4c7c78a2f1 fix compilation of rslib outside Bazel
fixes code completion
2020-11-24 18:51:19 +10:00
RumovZ
2cf97dc554 Add tests for conversion functions in text.rs 2020-11-20 09:45:53 +01:00
RumovZ
ab2cf9f457 Replace text.rs/text_to_re with text.rs/to_re 2020-11-20 09:23:25 +01:00
Damien Elmes
4043bd90bb Merge pull request #823 from RumovZ/rework-search-parser
Rework search parser
2020-11-20 16:22:12 +10:00
Damien Elmes
717969862b mark created deck parents as modified
Thanks to cecini for the original report. Closes #831:
https://github.com/ankitects/anki/pull/831
2020-11-19 08:48:43 +10:00
RumovZ
a6fe08f662 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
6290e09b89 Implement the prefix r: to search for raw input 2020-11-18 22:26:51 +01:00
RumovZ
f05e70a03e Merge branch 'master' into rework-search-parser
Conflicts:
    rslib/src/search/sqlwriter.rs
2020-11-18 09:04:04 +01:00
RumovZ
add3fea6c3 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
96845421d8 Fix RE in to_custom_re of text.rs
Match every single (potentially escaped) character of the string, so
they can be escaped properly.
2020-11-17 15:39:54 +01:00
RumovZ
64bf14f1e9 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
35bfd20240 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
c4bea9e3c0 Use enforced re to parse deck
Fix write_deck not recognising escaped deck name separators:
\:\: -> ::
2020-11-15 21:32:36 +01:00
RumovZ
065d9e939b Annotate RegEx for invalid-escape check 2020-11-15 14:22:16 +01:00
RumovZ
e1ddc3d63a Extend tests for new search parsing
(Also fix indentation)
2020-11-15 12:00:20 +01:00
RumovZ
6d4d1369d4 Fix escape check for escaped backslash 2020-11-15 11:57:11 +01:00
RumovZ
2e54817870 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
022efd5956 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
d65b1f96f7 Fix tests for new search parsing (and reformat) 2020-11-14 19:13:09 +01:00
RumovZ
59f0010783 Fix whitespace in write_tag and parser/whitespac0 2020-11-14 19:10:56 +01:00
RumovZ
baf3dd9dde 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
c27175238c 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
e09486d088 Fix bugs and inconsistencies in the search parser 2020-11-12 17:27:50 +01:00
Damien Elmes
8147c9996a Merge pull request #793 from nwwt/object-audio-tags-support
Audio & object tag support
2020-11-11 10:33:31 +10:00
Andreas Reis
81d6d21ae3 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
434fdae4f0 Merge pull request #805 from cecini/duecounts
align rslib get_subnode impl with anki pythonapi find_deck_in_tree
2020-11-06 10:57:49 +10:00
Damien Elmes
aaa950f66c handle notes with invalid utf8 2020-11-06 10:21:51 +10:00
Damien Elmes
e049062147 fix missing buildinfo on Windows 2020-11-05 11:21:27 +10:00
Damien Elmes
f24d80bac5 update to latest fluent libs, and integrate maximum digit handling
We now limit number of digits in our formatter, instead of relying
on an upstream patch.
2020-11-03 14:10:45 +10:00
Damien Elmes
cfbbb69648 trailing newline .ftl check can happen at build time
Removes the need to build ripgrep for CI
2020-11-01 14:59:45 +10:00
Damien Elmes
ce3b08ac58 initial Bazel conversion
Running and testing should be working on the three platforms, but
there's still a fair bit that needs to be done:

- Wheel building + testing in a venv still needs to be implemented.
- Python requirements still need to be compiled with piptool and pinned;
need to compile on all platforms then merge
- Cargo deps in cargo/ and rslib/ need to be cleaned up, and ideally
unified into one place
- Currently using rustls to work around openssl compilation issues
on Linux, but this will break corporate proxies with custom SSL
authorities; need to conditionally use openssl or use
https://github.com/seanmonstar/reqwest/pull/1058
- Makefiles and docs still need cleaning up
- It may make sense to reparent ts/* to the top level, as we don't
nest the other modules under a specific language.
- rspy and pylib must always be updated in lock-step, so merging
rspy into pylib as a private module would simplify things.
- Merging desktop-ftl and mobile-ftl into the core ftl would make
managing and updating translations easier.
- Obsolete scripts need removing.
- And probably more.
2020-11-01 14:26:58 +10:00
cecini
e12c09bd11 align rslib get_subnode impl with anki pythonapi find_deck_in_tree, fix nestdeck due counts issue 2020-10-29 23:53:26 +08:00
Andreas Reis
c77ac81e9d Add audio & object tags to media check
Makes the media check recognize files in <audio> and <object> tags as used.

They've been observed/supported by the WebView (checked: Anki, AnkiDroid) since just about forever already and are extremely useful if one knows a thing about web dev.
2020-10-25 13:09:57 +01:00
abdo
29d17bf608 Ensure non-empty names
https://github.com/ankitects/anki/pull/801/
2020-10-22 16:11:06 +03:00
abdo
69da22a2b9 Strip double quotes from names
Strip double quotes from all kinds of names

https://github.com/ankitects/anki/pull/798
2020-10-21 21:48:49 +03:00
Damien Elmes
791894d2d0 fix new clippy lints 2020-10-09 21:35:53 +10:00
Damien Elmes
d3de0bbaff reindex when checking database
Came across a user with a corrupt index:

sqlite> pragma integrity_check;
 integrity_check = wrong # of entries in index ix_revlog_cid
 integrity_check = wrong # of entries in index ix_cards_sched

This is not picked up by a quick check, and a vacuum does not
fix it, but a reindex does.

AnkiWeb currently performs a full check when a file is uploaded
to it, so this was leading to "corrupt" to show up when syncing
the collection, with a local DB check not reporting/fixing the issue.
2020-10-05 17:40:43 +10:00
Damien Elmes
61bbe6a604 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
2e7c71b415 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
b39612eb33 rename downgrade method for clarity 2020-09-22 15:53:26 +10:00
Damien Elmes
ea7b8c5e49 update schema to fix default initial ease in deck configs
Closes #766

- changes the on-disk representation from % to a multiplier,
eg 250 -> 2.5, as this is consistent with the other options
- resets deck configs at or below 1.3 to 2.5
- for any cards that were using a reset deck config, reset their
current factor if it's at or below 2.0x. The cutoff is arbitrary,
and just intended to make sure we catch cards the user has rated
Easy on multiple times. The existing due dates are left alone.
2020-09-22 08:16:39 +10:00
Damien Elmes
4d66bafc51 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
2a5ebad11f fix incorrect SQL in previous change 2020-09-19 12:27:00 +10:00
Damien Elmes
35470fdcf3 congrats_info() failed if learning card had negative due
https://forums.ankiweb.net/t/integralvalueoutofrange-for-filtered-deck/3353
2020-09-18 20:14:35 +10:00