Damien Elmes
4bb3d7a958
add separate file for gui hooks
2020-01-13 14:38:05 +10:00
Damien Elmes
d92e27ab50
stray space
2020-01-13 13:58:35 +10:00
Damien Elmes
dd61389319
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
b42912e639
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
9bb0348fdd
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
be70997e5a
update version
2020-01-12 15:10:27 +10:00
Damien Elmes
84d22046d4
fix type:cloze handling
2020-01-11 19:38:41 +10:00
Damien Elmes
a51a4e4d31
drop pystache and move legacy code into separate file
2020-01-11 19:38:30 +10:00
Damien Elmes
dc8b854ada
drop pystache comparison
2020-01-11 18:15:13 +10:00
Damien Elmes
7cde51e884
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
feb0a31bba
static->const
2020-01-11 13:06:48 +10:00
Damien Elmes
0ccc9e98a8
drop unnecessary capitalized cloze handling
2020-01-11 13:03:43 +10:00
Damien Elmes
389bf07b52
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
cc09ca34d4
cloze: support
...
MathJax still to do
2020-01-11 12:07:06 +10:00
Damien Elmes
94a72f970a
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
7d7656d86f
add ruby filters
2020-01-10 21:04:52 +10:00
Damien Elmes
d4553e9488
add some text helpers
2020-01-10 21:01:23 +10:00
Damien Elmes
96c8784024
add copyright headers to some files
2020-01-10 21:00:48 +10:00
Damien Elmes
deca82ca9d
skip rslib doctests, we don't use them and they're slower
2020-01-10 18:06:21 +10:00
Damien Elmes
3f724e5c98
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
f7ff0d1c17
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
c010bb0a37
make sure pyenv is active when fixing
2020-01-10 13:07:12 +10:00
Damien Elmes
ff7ff5c2b9
fix next_day_at being off by a day before the rollover
2020-01-10 08:21:52 +10:00
Damien Elmes
1152db5998
update translations
...
update translations
2020-01-10 08:21:52 +10:00
Damien Elmes
a5613523ee
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
91e215d2c5
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
5a9af48178
fix type:cloze, and remove misleading comments
2020-01-09 08:05:49 +10:00
Damien Elmes
afe391c18b
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
9704346ecf
Merge pull request #418 from glutanimate/addcards-addnote-hook
...
Add hook for AddCards.addNote
2020-01-09 08:05:20 +10:00
Glutanimate
8ff506f184
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
cda296748d
Add hook for AddCards.addNote
2020-01-08 21:29:28 +01:00
Damien Elmes
02720ec604
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
c0a69587f3
fix type answer filter
2020-01-08 20:29:15 +10:00
Damien Elmes
ad17c765e6
ignore template closing characters outside of a tag
2020-01-08 20:29:04 +10:00
Damien Elmes
0087eee6d9
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
031c4e814f
move filter reversal into pystache
2020-01-08 18:59:05 +10:00
Damien Elmes
b014822253
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
1f2e00690f
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
5ce964e91d
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
83f0e15213
show stdout/stderr when running tests
2020-01-08 15:52:51 +10:00
Damien Elmes
29e476f482
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
Damien Elmes
706ed225ca
move furigana/hint filters into template2
2020-01-08 12:30:08 +10:00
Damien Elmes
4bca26161b
clean up _renderQA(), and split rendering part out
2020-01-08 12:07:44 +10:00
Damien Elmes
fb5e6f3d01
update readme
2020-01-08 10:32:58 +10:00
Damien Elmes
4fc6184f80
remove stray character
2020-01-07 18:44:44 +10:00
Damien Elmes
e7ea121196
use 3.7 annotations
2020-01-07 18:43:20 +10:00
Damien Elmes
8b94d69abc
bump minimum python version from 3.6 to 3.7
2020-01-07 18:34:36 +10:00
Damien Elmes
fe18594c50
more makefile fixes
...
can't rely on SHELLFLAGS on macOS
2020-01-07 18:19:18 +10:00
Damien Elmes
a684ac120f
run contrib check on push as well
...
Which should ensure I notice when I've forgotten to change my email
back after testing the script :-)
2020-01-07 10:14:01 +10:00
Damien Elmes
46445638a8
fix days_elapsed moving backwards
2020-01-07 09:29:43 +10:00