Commit graph

2773 commits

Author SHA1 Message Date
Damien Elmes
c84c3bce72 fix overlapping clozes 2020-01-14 07:07:21 +10:00
Damien Elmes
6fe2d06b16 add hook to modify template prior to rendering 2020-01-13 21:57:15 +10:00
Damien Elmes
7f65f95245 request type hints in new contributions 2020-01-13 21:39:57 +10:00
Damien Elmes
21feaf9a63 include py.typed for mypy
these builds are now available on
https://github.com/ankitects/anki-typecheck

The add-on docs will be updated shortly to provide info on
using the new hooks and type checking.
2020-01-13 21:18:03 +10:00
Damien Elmes
2834cdcc6a add license to wheels and option to skip bundling extra files 2020-01-13 20:04:23 +10:00
Damien Elmes
555d1f0e55 add a flag to handle the legacy hook missing args case
And update a few more hooks.
2020-01-13 18:37:08 +10:00
Damien Elmes
3d94af972e update the rest of the anki/ hooks/filters 2020-01-13 17:59:52 +10:00
Damien Elmes
ad59c96bdd run black on generated hooks 2020-01-13 17:55:58 +10:00
Damien Elmes
765c7a143c buildinfo required to generate hooks 2020-01-13 14:55:32 +10:00
Damien Elmes
aa8b1645a7 add separate file for gui hooks 2020-01-13 14:38:05 +10:00
Damien Elmes
f13b98cc20 stray space 2020-01-13 13:58:35 +10:00
Damien Elmes
ae4ea8db22 New type-safe approach to hooks/filters
Still todo:
- Add separate module for GUI hooks
- Update the remaining runHook/runFilter() calls
- Document the changes, including defensive registration
2020-01-13 13:57:51 +10:00
Damien Elmes
356962cb2c mark anki and aqt modules as having typing info
This means once they're installed via develop or a wheel, add-ons
will be able to more easily typecheck their code against the Anki
code.
2020-01-13 13:03:37 +10:00
Damien Elmes
8eceedd2e5 more template rendering tweaks
- The front and back are rendered in one call now. If the front
side contains no custom filters, we can bake {{FrontSide}} into the
rear side. If it did contain custom filters, we return the partially
complete rear template instead, and the calling code can inject
the FrontSide in after it has been fully rendered.

- Instead of modifying "cloze" into something like "cq-2", the card
ordinal and whether we're rendering the question or answer are now
passed in to the rendering filters as context.

- The Rust code doesn't need to support filter names split on '-'
anymore.

- Drop the "Show" part of hint descriptions so i18n support can be
deferred.

- Ignore blank filter names caused by user using two colons instead
of one.

- Fixed hint field and text transposition.
2020-01-12 21:34:07 +10:00
Damien Elmes
65d86fe853 update version 2020-01-12 15:10:27 +10:00
Damien Elmes
c486a4bf6d fix type:cloze handling 2020-01-11 19:38:41 +10:00
Damien Elmes
718bb3fae8 drop pystache and move legacy code into separate file 2020-01-11 19:38:30 +10:00
Damien Elmes
d6884dd792 drop pystache comparison 2020-01-11 18:15:13 +10:00
Damien Elmes
524a27dd08 ignore extra { chars in replacement
This will still show a trailing } with {{{field}}}, but will at
least show the field content instead of 'unknown field'.
2020-01-11 18:02:24 +10:00
Damien Elmes
9028018277 static->const 2020-01-11 13:06:48 +10:00
Damien Elmes
41d155a6ee drop unnecessary capitalized cloze handling 2020-01-11 13:03:43 +10:00
Damien Elmes
e7c3218724 handle mathjax+cloze case
instead of trying to selectively change clozes from c to C, just
strip HTML from inside the mathjax sections instead
2020-01-11 12:57:32 +10:00
Damien Elmes
cf5457da25 cloze: support
MathJax still to do
2020-01-11 12:07:06 +10:00
Damien Elmes
d671f091ff type: and hint: support
We may need to keep handling hints in the Python code for now until
i18n is sorted out.
2020-01-11 09:35:41 +10:00
Damien Elmes
3510eb1861 add ruby filters 2020-01-10 21:04:52 +10:00
Damien Elmes
ab841d9ebe add some text helpers 2020-01-10 21:01:23 +10:00
Damien Elmes
ca6793c940 add copyright headers to some files 2020-01-10 21:00:48 +10:00
Damien Elmes
f101c34df7 skip rslib doctests, we don't use them and they're slower 2020-01-10 18:06:21 +10:00
Damien Elmes
3a14c247c8 replace fields and apply standard filters in rslib
The filters still need to be implemented.
2020-01-10 18:02:26 +10:00
Damien Elmes
8f3df55da2 flatten->render; pass field content in
This is paving the way to move the standard filters into Rust.

Non-empty fields are now determined in Rust, using a single regex
instead of the overkill stripHTMLMedia(). The old implementation
has been moved into the Pystache code for now.
2020-01-10 14:59:29 +10:00
Damien Elmes
c9f7f387f4 make sure pyenv is active when fixing 2020-01-10 13:07:12 +10:00
Damien Elmes
f3071df403 fix next_day_at being off by a day before the rollover 2020-01-10 08:21:52 +10:00
Damien Elmes
74d0db0bb5 update translations
update translations
2020-01-10 08:21:52 +10:00
Damien Elmes
31ebf0473f rework new timezone code
We now store the UTC offset that was in effect at creation time,
and use that to determine the starting date.
2020-01-09 16:58:27 +10:00
Damien Elmes
d5b0be6ef4 Update CONTRIBUTORS
Minor tweak that will add my noreply email to the list of contributors so merging pull requests doesn't fail.
2020-01-09 08:13:07 +10:00
Damien Elmes
3a7fc28aa3 fix type:cloze, and remove misleading comments 2020-01-09 08:05:49 +10:00
Damien Elmes
ef652422dc Merge pull request #419 from glutanimate/add-develop-target-to-main-makefile
Split root develop steps into separate develop target
2020-01-09 08:05:30 +10:00
Damien Elmes
144513a7b3 Merge pull request #418 from glutanimate/addcards-addnote-hook
Add hook for AddCards.addNote
2020-01-09 08:05:20 +10:00
Glutanimate
4df58983a2 Split root develop steps into separate develop target
Allows development tools to directly debug qt/runanki while using
`make develop` as a debugging pre-launch task.
2020-01-08 21:44:46 +01:00
Glutanimate
4be8351d2c Add hook for AddCards.addNote 2020-01-08 21:29:28 +01:00
Damien Elmes
0c6dd8cb14 fix CI failing
unsure why this doesn't fail locally, using the same mypy version
2020-01-08 20:49:40 +10:00
Damien Elmes
ed7558b817 fix type answer filter 2020-01-08 20:29:15 +10:00
Damien Elmes
c0604c596b ignore template closing characters outside of a tag 2020-01-08 20:29:04 +10:00
Damien Elmes
520275bea3 handle conditional replacement in Rust
This extends the existing Rust code to handle conditional
replacement. The replacement of field names and filters to text
remains in Python, so that add-ons can still define their own
field modifiers.

The code is currently running the old Pystache rendering and the
new implementation in parallel, and will print a message to the
console if they don't match. If you notice any problems, please
let me know.
2020-01-08 20:28:04 +10:00
Damien Elmes
29acb2dd32 move filter reversal into pystache 2020-01-08 18:59:05 +10:00
Damien Elmes
b1b81a3726 use hooks for the built in filters as well
To support cloze deletions, we add back support for 'extra', but
using a simpler one character split instead of parens.
2020-01-08 18:08:24 +10:00
Damien Elmes
4fe3d686a6 move the rest of Anki's code out of pystache
In the process of factoring out the field filtering, the "extra"
and "fullname" args are just passed in as a blank string now.
Extra was functionality that allowed a field modifier to be defined
as "filtername(arg1,arg2):field", and fullname was the name of the
field including any provided field modifiers. From grepping through
the add-ons on AnkiWeb, neither appears to have been used.
2020-01-08 17:15:46 +10:00
Damien Elmes
93e01850b6 remove cloze handling in conditionals
As far as I can tell, this was not functional, as "{{#cloze:Text}}"
becomes cq-1:Text, which doesn't match the regex
2020-01-08 16:10:19 +10:00
Damien Elmes
34ac272349 show stdout/stderr when running tests 2020-01-08 15:52:51 +10:00
Damien Elmes
a47dc8da8f no longer try fields with : in their names
it's not supported by the card generation code, and the card
layout screen will automatically fix note types
2020-01-08 14:42:54 +10:00