Commit Graph

593 Commits

Author SHA1 Message Date
Damien Elmes
1cb3984049 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
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
Damien Elmes
d7cded4ae1 fix compilation of rslib outside Bazel
fixes code completion
2020-11-24 18:51:19 +10:00
RumovZ
347c547e10 Add tests for conversion functions in text.rs 2020-11-20 09:45:53 +01:00
RumovZ
0fc84d19b2 Replace text.rs/text_to_re with text.rs/to_re 2020-11-20 09:23:25 +01:00
Damien Elmes
e23d40e850
Merge pull request #823 from RumovZ/rework-search-parser
Rework search parser
2020-11-20 16:22:12 +10:00
Damien Elmes
7c57e5044b 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
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
91873d68eb 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
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
Damien Elmes
e99c0dbe15
Merge pull request #793 from nwwt/object-audio-tags-support
Audio & object tag support
2020-11-11 10:33:31 +10: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
96f77b4b5e
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
c157ccb3f5 handle notes with invalid utf8 2020-11-06 10:21:51 +10:00
Damien Elmes
3f47ff9abd fix missing buildinfo on Windows 2020-11-05 11:21:27 +10:00
Damien Elmes
3c12cb1600 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
0cf964b16d 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
aea0a6fcc6 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
2606a8a489 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
6e9aaad11e 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
97ea14449f Ensure non-empty names
https://github.com/ankitects/anki/pull/801/
2020-10-22 16:11:06 +03:00
abdo
55f1d3773f 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
c96784c0eb fix new clippy lints 2020-10-09 21:35:53 +10:00
Damien Elmes
90fa38495e 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
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
cc3fdb2f37 rename downgrade method for clarity 2020-09-22 15:53:26 +10:00
Damien Elmes
76acf04dc0 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
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
755a58b96c fix incorrect SQL in previous change 2020-09-19 12:27:00 +10:00
Damien Elmes
91759694a1 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