Noah Hellman
99f4691e52
lib: emit footnotes as they are encountered
...
Previously, footnotes and their children events were skipped (stored in
block tree) and inline parsed at the end. Now, they are emitted by the
parser immediately and the responsibility to aggregate them has been
moved to the renderer.
resolves #31
2023-04-25 21:03:18 +02:00
Noah Hellman
c4ecd0c677
Revert "lib: add Render::render_{event, prologue, epilogue}"
...
This reverts commit e8503e28fd
.
This imposed too many limitations on the renderer implementation. E.g.
making it impossible to store `Event<'s>`'s in the renderer struct.
Revert back to having the renderer struct separate from the implementor
of the Render trait. The implementor may instead create a renderer
struct without any restrictions.
2023-04-25 21:03:18 +02:00
Noah Hellman
8e48021f7a
lib: emit LinkDefinition event
...
resolves #14
2023-04-25 21:03:18 +02:00
Noah Hellman
17b166867f
html: derive Renderer::default
...
setting defaults manually mostly causes rebase conflicts
2023-04-25 21:03:18 +02:00
Noah Hellman
1b90ba9423
bench: add block_footnotes benchmark
...
current benchmarks do not contain a single footnote
2023-04-25 21:03:18 +02:00
Noah Hellman
ebe7a913bf
suite: add footnotes unit tests
...
complementary to ones borrowed from djot.js suite
2023-04-25 21:03:18 +02:00
Noah Hellman
00d653e12d
make: only rm symlink tests
...
avoid deleting own tests
2023-04-25 21:03:18 +02:00
Noah Hellman
91ae737be3
suite: prepend djot_js tests
...
avoid name conflicts when adding own tests
2023-04-25 21:03:18 +02:00
Noah Hellman
6611404992
add helper script to tag release
2023-04-25 20:58:59 +02:00
Noah Hellman
d61a9fa4a9
Release 0.2.1
2023-04-25 20:31:50 +02:00
Noah Hellman
bdab4f021b
lex: eat non special chars separately
...
let tight loop work as long as there no special characters
2023-04-25 20:26:47 +02:00
Noah Hellman
3701d282ac
lex: separate escaped/non-escaped
2023-04-25 20:26:47 +02:00
Noah Hellman
e877fdbde8
inline: rm resolved TODO
...
resolved by a846477cea
2023-04-25 18:35:13 +02:00
Noah Hellman
ab33adc799
lib: cfg guard doctests using html renderer
...
docs do not compile when html feature is off otherwise
2023-04-25 18:35:10 +02:00
Noah Hellman
3cde744fc1
readme: add useful links to top
2023-04-11 20:21:29 +02:00
Noah Hellman
176d026cbb
PR #35 Check event balance when fuzzing
...
Merge branch 'balance'
2023-04-10 18:58:44 +02:00
Noah Hellman
d2d7f5d474
lib: fix url in autolink/email end event
...
was constant ">" instead of actual url
2023-04-10 18:50:22 +02:00
Noah Hellman
3c17d6df49
afl: add target parse_balance
...
verify all containers are balanced
2023-04-10 18:50:21 +02:00
Noah Hellman
88a872cd88
ci: use matrix for fuzz targets
...
to make them run in parallel
2023-04-10 18:50:05 +02:00
Noah Hellman
5de8543bb0
bench: mv input files to bench/input
...
only used by input crate, avoid cluttering bench dir
2023-04-10 11:49:03 +02:00
Noah Hellman
bee3d5d747
bench/suite_bench: use snake case for input files
...
rust identifiers may not contain -
use _ for files also to avoid confusion of having two names
2023-04-10 11:49:03 +02:00
Noah Hellman
9bdb4c59fc
suite make: specify gawk
...
broken for e.g. nawk
TODO: fix to work with any awk or replace awk script with something else
(e.g. separate crate with build.rs?)
2023-04-09 16:17:14 +02:00
Noah Hellman
b6300d22df
Release 0.2.0
2023-04-05 21:17:33 +02:00
Noah Hellman
a2adb40629
cargo: exclude dirs from package
...
unneeded files for downstream
2023-04-05 21:17:33 +02:00
Noah Hellman
91b6649fa8
PR #30 Inline parser overhaul
...
Merge branch 'inline_perf'
2023-04-05 21:17:33 +02:00
Noah Hellman
7a10767fed
jotdown_wasm: display version
...
mostly useful for the hosted version
2023-04-05 21:17:33 +02:00
Noah Hellman
1202160a88
inline: resume attr parsing when new lines received
...
instead of starting over for each new line
2023-04-05 21:17:33 +02:00
Noah Hellman
0af2c46c57
jotdown_wasm: prefix html ids with jotdown-
...
avoid potential conflicts if included
2023-04-05 21:17:33 +02:00
Noah Hellman
50205573d0
inline: store attributes in vec
2023-04-05 21:17:33 +02:00
Noah Hellman
c0bee7db78
PR #32 wasm demo improvements
...
Merge branch 'wasm'
2023-04-05 21:17:33 +02:00
Noah Hellman
62d33effc4
inline: parse multiline attributes
...
reimplement after broken by "take str per line instead of full inline
iter" commit
also resolves #18 and #34
2023-04-05 21:17:33 +02:00
Noah Hellman
8893281310
PR #29 Allow rendering borrowed events
...
Merge branch 'render_ref'
closes #29
2023-04-05 21:17:33 +02:00
Noah Hellman
23d4a1f129
readme: note web demo usefulness
2023-04-05 21:17:33 +02:00
Noah Hellman
3d42820001
inline: add ControlFlow enum
...
needed to indicate that more input is needed
this is needed only for multiline attributes that require backtracking
2023-04-05 21:17:33 +02:00
Noah Hellman
7fcc802415
make: nonzero exit when afl_quick detects crashes
...
ci job still goes green when fuzzing fails, otherwise
2023-04-05 21:17:33 +02:00
Noah Hellman
5daa160288
bench-crit: add html_borrow, html_clone
...
allow comparing between rendering owned, borrowed or cloned events
2023-04-05 21:17:33 +02:00
Noah Hellman
754a93ec63
readme: correct online -> web
2023-04-05 21:17:33 +02:00
Noah Hellman
7133de94bb
inline: keep track of lines ahead
...
Needed for attributes, as they cannot be parsed without backtracking.
Potentially we have to parse for attributes until the end of the block
before we can know if it is invalid attributes and we should instead
parse for other inline events.
2023-04-05 21:17:33 +02:00
Noah Hellman
5e2d567a54
PR #27 Expose tag for unresolved links
...
Merge branch 'unresolved_links'
closes #27
2023-04-05 21:17:33 +02:00
Noah Hellman
10788af246
lib: add Render::{push, write}_borrowed
...
allow rendering iterators with borrowed events
resolves #24
2023-04-05 21:17:33 +02:00
Noah Hellman
0ef3681b1b
jotdown_wasm: add output option for indented events
...
make events more readable, more resembling an AST
2023-04-05 21:17:33 +02:00
Noah Hellman
2bcc6122ca
inline: store link cowstrs in vec
...
try to reduce size of Event by placing the cowstr in a shared vec, and
just keeping an index in the event itself
seems to have a significant performance benefit on benchmarks
2023-04-05 21:17:33 +02:00
Noah Hellman
e8503e28fd
lib: add Render::render_{event, prologue, epilogue}
...
derive push/write automatically from these
2023-04-05 21:17:33 +02:00
Noah Hellman
f3732693c6
jotdown_wasm: add option to show events
...
provide 1:1 representation of events to help explore how events are
emitted
2023-04-05 21:17:33 +02:00
Noah Hellman
a846477cea
inline: parse multi-line link tags/urls
...
reimplement after broken by "take str per line instead of full inline
iter" commit
this also resolves #22
2023-04-05 21:17:33 +02:00
Noah Hellman
e506fffed8
mv push/write examples from html to Render trait
...
They apply more to the Render trait now than the implementation in the
html module
2023-04-05 21:17:33 +02:00
Noah Hellman
f31398a796
attr: impl Debug for Attributes manually
...
show key value pairs instead of internal structure
2023-04-05 21:17:33 +02:00
Noah Hellman
98f3fe5c7c
attr: Parser overhaul
...
- allow reading one line at a time, values may span multiple inputs
- mv event push to Parser, allowing reuse from outside Attributes::parse
- get rid of Element, simplify
2023-04-05 21:17:33 +02:00
Noah Hellman
8eafdf073b
html: extract Writer::render_{event, epilogue}
2023-04-05 21:17:33 +02:00
Noah Hellman
122cb84d2d
jotdown_wasm: use full viewport
2023-04-05 21:17:33 +02:00