Noah Hellman
4f863f91d5
block: add test parse_description_list_empty
2023-05-15 19:05:22 +02:00
Noah Hellman
d9804d963c
block: add parse_table_empty
2023-05-15 19:05:22 +02:00
Noah Hellman
ee9ea2e023
block: specify heading pos in event
...
instead of using span
2023-05-15 19:05:22 +02:00
Noah Hellman
898ed90a24
block: specify div class in event
...
instead of using span
2023-05-15 19:05:22 +02:00
Noah Hellman
6cebdfcc0c
block: specify footnote label in event
...
instead of using span
2023-05-15 19:05:22 +02:00
Noah Hellman
116245367a
block: specify task check in event
...
instead of using span
2023-05-15 19:05:22 +02:00
Noah Hellman
6200b07287
block: specify list marker in event
...
instead of using span
2023-05-15 19:05:22 +02:00
Noah Hellman
dbedeeb5ee
block: specify lang in code block event
...
instead of using span
2023-05-15 19:05:22 +02:00
Noah Hellman
e90594f2b7
block: specify link def label in event
...
instead of using span
2023-05-15 19:05:22 +02:00
Noah Hellman
bc4dd794bc
block: store level in event
...
do not use span length as level
2023-05-15 19:05:22 +02:00
Noah Hellman
6abe9e44c7
inline: mv symbol from span to event field
2023-05-15 19:05:22 +02:00
Noah Hellman
9676d9e5d6
inline: mv footnote label from span to event field
2023-05-15 19:05:22 +02:00
Noah Hellman
0a144574f4
inline: mv autolink url from span to event field
2023-05-15 19:05:22 +02:00
Noah Hellman
657b47df12
inline: mv raw format spec from span to event field
2023-05-15 19:05:22 +02:00
Noah Hellman
8be7c4c840
block: replace int literals with byte chars
2023-05-15 19:05:22 +02:00
Noah Hellman
c29b926d16
block: rm redundant block scope
2023-05-15 19:05:22 +02:00
Noah Hellman
0484ee2011
lib: make code block language non option
...
no distinction between empty language and None
2023-05-15 19:05:22 +02:00
Noah Hellman
e79f767604
lib: code block lang -> language
2023-05-15 19:05:22 +02:00
Noah Hellman
924a3c35bb
lib: make div class non option
...
there is no distinction between an empty class and a None
2023-05-15 19:05:22 +02:00
Noah Hellman
116fb04725
lex: remove DollarBacktick token
...
can now read src to check dollar before backticks, so simpler to always
use backtick token
fixes several bugs, e.g.
| $`abc` | (previously did not get closed)
`$abc$` (previously did not get closed)
2023-05-15 19:05:22 +02:00
Noah Hellman
b2d15383e7
inline: allow empty span when followed by url/label/attrs
...
allow e.g. images without alt text ![](url)
2023-05-10 22:12:07 +02:00
Noah Hellman
329207689b
prepass: fix lookup of headings
...
bug caused by confusing binary_search_by_key to be element instead of
index, both of which were usize
2023-05-10 22:04:01 +02:00
Noah Hellman
9efd4e4448
prepass: fix referenced headings with e.g. spaces
...
headings that did not exactly match their ids were previously not
matched with their reference
2023-05-10 22:04:01 +02:00
Noah Hellman
45c86da274
inline: fix unclosed attrs after cont/verb
2023-05-04 19:58:42 +02:00
Noah Hellman
9d9aded764
html: add doc comment to html::Renderer
2023-05-04 19:58:42 +02:00
Noah Hellman
d2a46663f1
html: fix initial newline when hr first element
2023-04-29 14:21:11 +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
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
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
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
50205573d0
inline: store attributes in vec
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
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
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
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
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
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
34e74ddc43
attr: impl valid without Parser
...
only State fsm is needed
try to use Parser only when attributes need to be stored
2023-04-05 21:17:33 +02:00
Noah Hellman
242a64e3b4
attr: mv wildcard State use to Parser methods
...
avoid potential name conflict
2023-04-05 21:17:33 +02:00
Noah Hellman
172f555272
attr: step one char at a time
...
make sure attr can keep track of all state so one char can be provided
at a time
this allows not restarting from beginning if we find out we need more
chars to finish parsing attributes
2023-04-05 21:17:33 +02:00
Noah Hellman
e1b12ba642
attr: rename State::{Attribute->Key}
...
more accurate name
2023-04-05 21:17:33 +02:00
Noah Hellman
86ee4ee520
lex: rm lex::Kind::Whitespace
...
Whitespace tokens do not necessarily create new events but they work as
a delimiter for words with attributes and affect some container
delimiters. Now when we can read the source from inline, we can instead
inspect for whitespace when needed.
Removing the whitespace token allows the lexer to continue a lot longer
without stopping. E.g. a typical line in a paragraph with no special
characters can turn into a single token.
2023-04-05 21:17:33 +02:00
Noah Hellman
9454a2e393
inline: apply word attribute when flushing event buf
...
fixes issue with e.g `[text]({.cls})` where attributes get immediately
applied to `[text](` where link should have priority.
2023-04-05 21:17:33 +02:00
Noah Hellman
08ef15655b
inline: extract merge_str_events
...
decrease size of inline::Parser::next, make more readable
2023-04-05 21:17:33 +02:00