Commit graph

86 commits

Author SHA1 Message Date
Noah Hellman
8382fe122f lib: derive Clone for Parser
should now be safe to do
2023-04-05 21:17:33 +02:00
Noah Hellman
3a1a3996e9 inline: take str per line instead of full inline iter
gets rid of DiscontinousChars which is large and requires cloning on
peek

resolves #4
2023-04-05 21:17:33 +02:00
Noah Hellman
8169feb1f6 inline: impl links w/o lookahead
needed to get rid of DiscontinuousChars
2023-04-05 21:17:33 +02:00
Noah Hellman
66d821f03e inline: replace Delim by Opener
no need to have a delimiter for closer, only opener needs to be stored
in stack
2023-04-05 21:17:33 +02:00
Noah Hellman
ed5aed3759 inline: impl verbatim w/o lookahead
avoid lookahead for containers that can cross newline

needed to get rid of DiscontinuousChars iter
2023-04-05 21:17:33 +02:00
Noah Hellman
e8e551fd8b inline: separate lex, span to separate Input object
easier handling of mutable pointers, can borrow self.input instead of
whole self

can e.g. borrow mutable state while still eating new tokens
2023-04-05 21:17:33 +02:00
Noah Hellman
5d6d0e0840 inline: use lex kinds
import Sequence and use Delimiter, Symbol consistently
2023-04-05 21:17:33 +02:00
Noah Hellman
f192ea2aa6 inline: use ? to flatten methods 2023-04-05 21:17:33 +02:00
Noah Hellman
491c5f2866 inline: always push events from parse methods
in order to more conveniently allow pushing in arbitrary order

parse methods now return an Option<()> that functions kind of like a
std::ops::ControlFlow. Some(()) means the token was parsed, None means
continue parsing.
2023-04-05 21:17:33 +02:00
Noah Hellman
9429f90307 inline: reuse event buffer between blocks
make sure not to allocate a new buffer on each block
2023-04-05 21:17:33 +02:00
Noah Hellman
1e5e56c463 only assert in debug builds
these are primarily used to detect bugs during e.g. fuzzing.

most of these asserts have negligible impact on performance, but if they
are not debug asserts it is not obvious that they dont affect
performance of release builds
2023-04-05 21:17:33 +02:00
Noah Hellman
d171cbb516 inline: add quote test 2023-04-05 21:17:33 +02:00
Noah Hellman
722f549ffd clippy: allow blocks_in_if_conditions everywhere 2023-04-05 21:17:33 +02:00
Noah Hellman
a7f5b337a8 inline: fix attrs missing for inline verbatim
closes #15
2023-03-11 22:16:56 +01:00
Noah Hellman
418bb38f82 inline: extract ahead_container_attributes 2023-02-21 17:58:05 +01:00
Noah Hellman
413fecfe6a fix/allow clippy lints 2023-02-12 00:59:18 +01:00
Noah Hellman
0de7776020 impl Clone, Copy on public objects 2023-02-05 20:36:49 +01:00
Noah Hellman
0420aad0a5 implement symbols
e.g. :some-sym:
2023-02-05 20:36:49 +01:00
Noah Hellman
924d6c44ac inline: disallow '<' in autolinks
avoid hangs on long <<<<<< sequences
2023-02-05 20:36:49 +01:00
Noah Hellman
cadf49fc53 fix usage of byte vs char count 2023-02-05 20:36:49 +01:00
Noah Hellman
fb6a44283d inline: do not emit empty events 2023-02-05 20:36:49 +01:00
Noah Hellman
4b52fb0832 fixup! inline fixup 2023-02-05 20:36:40 +01:00
Noah Hellman
1135cf7054 fixup! block: parse tables 2023-02-05 20:36:40 +01:00
Noah Hellman
6cf5aca1e3 fixup! stuuoestnhunoestuh 2023-02-05 20:36:40 +01:00
Noah Hellman
a03d46dfaf inline: impl smart em/endash 2023-02-05 20:36:40 +01:00
Noah Hellman
b10798b778 inline: impl smart ellipsis 2023-02-05 20:36:40 +01:00
Noah Hellman
56718ef887 inline: impl smart quotation 2023-02-05 20:36:40 +01:00
Noah Hellman
8237384077 span: add empty_{before,after}, after, between 2023-02-05 20:36:40 +01:00
Noah Hellman
d8d69b2488 fixup! inline: disallow containers of zero length 2023-02-05 20:36:40 +01:00
Noah Hellman
d0084b0d87 fixup! inline: disallow whitespace after/before emph 2023-02-05 20:36:40 +01:00
Noah Hellman
373567a6dc fixup! inline fixup 2023-02-05 20:36:40 +01:00
Noah Hellman
0605a0d901 fixup! inline: disallow whitespace after/before emph 2023-02-05 20:36:40 +01:00
Noah Hellman
d050c504ae inline: disallow whitespace after/before emph 2023-02-05 20:36:40 +01:00
Noah Hellman
b78b2866a8 fixup! inline fixup 2023-02-05 20:36:40 +01:00
Noah Hellman
641e904074 inline: disallow containers of zero length 2023-02-05 20:36:40 +01:00
Noah Hellman
7ee1c7514d inline fixup 2023-02-05 20:36:40 +01:00
Noah Hellman
79e2eab107 fixup! inline: hide empty attributes from output 2023-02-05 20:36:40 +01:00
Noah Hellman
79dfd3be36 inline: do not merge discontinuous str
may appear when ignoring attributes
2023-02-05 20:36:40 +01:00
Noah Hellman
d3b2ee14cb amend! inline: hide empty attributes from output
inline: hide empty attrs, whitespace attrs from output

in order to allow comments
2023-02-05 20:36:40 +01:00
Noah Hellman
8ccfb4c603 render footnotes 2023-02-05 20:36:40 +01:00
Noah Hellman
4a7967812e lex: fix buggy peek 2023-02-05 20:36:40 +01:00
Noah Hellman
d3a98e6626 inline: impl empty link references tag
use text as tag
2023-02-05 20:36:40 +01:00
Noah Hellman
f80991d07a inline: hide empty attributes from output
allow comments
2023-02-05 20:36:40 +01:00
Noah Hellman
e6eb02ad03 fixup! inline: word attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
064b4b1f88 inline: rename AttributesDummy -> Placeholder
allow general use
2023-02-05 20:36:40 +01:00
Noah Hellman
b512c670e6 attr valid: return whether attrs non-empty 2023-02-05 20:36:40 +01:00
Noah Hellman
161dfec96d inline: word attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
b3896908a3 inline: trim verbatim whitespace 2023-02-05 20:36:40 +01:00
Noah Hellman
b937b4f71e inline: span with attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
59664feaf3 fixup! parse inline attrs 2023-02-05 20:36:40 +01:00