Commit graph

460 commits

Author SHA1 Message Date
Noah Hellman
e8f2002c69 PR #36 Emit link defs/footnotes as encountered
Merge branch 'footnote'
2023-04-25 21:03:37 +02:00
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