Commit graph

391 commits

Author SHA1 Message Date
Noah Hellman
cadf49fc53 fix usage of byte vs char count 2023-02-05 20:36:49 +01:00
Noah Hellman
4cb9c07cfc fixup! block attributes 2023-02-05 20:36:49 +01:00
Noah Hellman
82e1fd74f5 fixup! block: add MeteredBlock as intermediate struct 2023-02-05 20:36:49 +01:00
Noah Hellman
59be7070de block: count indent in chars instead of bytes 2023-02-05 20:36:49 +01:00
Noah Hellman
ca7f3c7e89 do not treat \0 as EOF
may appear in input
2023-02-05 20:36:49 +01:00
Noah Hellman
3425ad4189 fixup! block: avoid panic on too short table line 2023-02-05 20:36:49 +01:00
Noah Hellman
d2df3eb8a1 fixup! mv spans to separate span file 2023-02-05 20:36:49 +01:00
Noah Hellman
1bbfd4a96a prepass: avoid consecutive '-' in heading id 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
a5d88b64ae parser: avoid panic 2023-02-05 20:36:49 +01:00
Noah Hellman
c4a3acaf70 block: avoid panic on too short table line 2023-02-05 20:36:49 +01:00
Noah Hellman
87d4f7c270 prepass: use hash set to avoid duplicate heading ids
linear lookup becomes problematic for large amount of headings with same
title
2023-02-05 20:36:40 +01:00
Noah Hellman
6a94e694f9 block: enforce valid div classes 2023-02-05 20:36:40 +01:00
Noah Hellman
30351500bb fixup! attr valid: return whether attrs non-empty 2023-02-05 20:36:40 +01:00
Noah Hellman
dc38076f50 block: limit ordered list number width
use 64-bit to not let limit be too low, 32-bit allows for only 6 alpha
digits, "zzzzzz".
2023-02-05 20:36:40 +01:00
Noah Hellman
4b52fb0832 fixup! inline fixup 2023-02-05 20:36:40 +01:00
Noah Hellman
8dd4db11ec html: escape user provided attribute values 2023-02-05 20:36:40 +01:00
Noah Hellman
f9655dfa9b fixup! block: fix parsing end of list 2023-02-05 20:36:40 +01:00
Noah Hellman
5d9f90342c block: fix parsing end of list
following paragraphs were considered part of list
2023-02-05 20:36:40 +01:00
Noah Hellman
5672ef4198 block: fix empty lines in code block
were accidentaly removed
2023-02-05 20:36:40 +01:00
Noah Hellman
de7404137e parser: keep inlines of code blocks verbatim 2023-02-05 20:36:40 +01:00
Noah Hellman
2893977dae fixup! block: fix headings with first line empty 2023-02-05 20:36:40 +01:00
Noah Hellman
9ab8be5d30 block: move Block::from to Kind::block
allow more inputs
2023-02-05 20:36:40 +01:00
Noah Hellman
60dcf09c1a impl automatic heading identifiers 2023-02-05 20:36:40 +01:00
Noah Hellman
b726580724 parser: fix end section eating block attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
7b8157cb51 fixup! parse inline attrs 2023-02-05 20:36:40 +01:00
Noah Hellman
3e8b80059e fixup! parser: impl link references 2023-02-05 20:36:40 +01:00
Noah Hellman
493a9b3563 heading event: limit level to u16 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
df8846cdba block: fix headings with first line empty 2023-02-05 20:36:40 +01:00
Noah Hellman
bfa58dfc0d block: allow repeating '#' in headings 2023-02-05 20:36:40 +01:00
Noah Hellman
451b2360f4 fixup! parser: apply link def attrs to link 2023-02-05 20:36:40 +01:00
Noah Hellman
dcb3b787a2 block: add MeteredBlock as intermediate struct 2023-02-05 20:36:40 +01:00
Noah Hellman
1c77b035b2 fixup! fixup! 27d710969473894b59f23ad981fc50cbd3b78977 2023-02-05 20:36:40 +01:00
Noah Hellman
25864fa467 fixup! block: add hierarchical heading sections 2023-02-05 20:36:40 +01:00
Noah Hellman
530820a04e block: add hierarchical heading sections 2023-02-05 20:36:40 +01:00
Noah Hellman
5347def13c fixup! block: split parse_block function 2023-02-05 20:36:40 +01:00
Noah Hellman
1f47a1729e parser: impl autolinks 2023-02-05 20:36:40 +01:00
Noah Hellman
2e992f5726 fixup! parser: allow linebreak in text of link tag refs 2023-02-05 20:36:40 +01:00
Noah Hellman
6cf5aca1e3 fixup! stuuoestnhunoestuh 2023-02-05 20:36:40 +01:00
Noah Hellman
9fd10683c5 parser: throw away link-def/footnote attrs
prevent attributes on link definitions and footnotes from applying to
upcoming elements
2023-02-05 20:36:40 +01:00
Noah Hellman
2e4a9147aa parser: apply link def attrs to link 2023-02-05 20:36:40 +01:00
Noah Hellman
9fdd402d07 parser: allow linebreak in text of link tag refs
e.g.

    [my
    link][]

will link to

    [my link]: url
2023-02-05 20:36:40 +01:00
Noah Hellman
8b8ccd65bb fixup! parse: merge enter / exit block events match branch 2023-02-05 20:36:40 +01:00
Noah Hellman
fee50d36fb block: parse div fences 2023-02-05 20:36:40 +01:00
Noah Hellman
dc2647910c block: remove code block indentation 2023-02-05 20:36:40 +01:00
Noah Hellman
a60e40e1f3 block: split parse_block function 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
f7ead5a69f fixup! mv spans to separate span file 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
5827890055 lex: rm unused hash token 2023-02-05 20:36:40 +01:00
Noah Hellman
5ed30af34d lex: rm unused colon token 2023-02-05 20:36:40 +01:00
Noah Hellman
c23dbf8e34 lex: rm unused plus token 2023-02-05 20:36:40 +01:00
Noah Hellman
961086dc5d lex: rm unused percentage token 2023-02-05 20:36:40 +01:00
Noah Hellman
bc787a1553 lex: rm unused gt token 2023-02-05 20:36:40 +01:00
Noah Hellman
bdf35ca7d1 lex: rm unused equal token 2023-02-05 20:36:40 +01:00
Noah Hellman
da74f09de0 lex: allow brace symbol pair to have non symbol 2023-02-05 20:36:40 +01:00
Noah Hellman
d530ad6da5 lex: rm unused ampersand token 2023-02-05 20:36:40 +01:00
Noah Hellman
a0ff5594fc lex: rm unused paren tokens 2023-02-05 20:36:40 +01:00
Noah Hellman
5209f8d271 lex: remove unused integer token 2023-02-05 20:36:40 +01:00
Noah Hellman
f03f905788 fixup! fixup! block: fix container indent trim on enter 2023-02-05 20:36:40 +01:00
Noah Hellman
7b632bf853 fixup! block: fix container indent trim on enter 2023-02-05 20:36:40 +01:00
Noah Hellman
7b6b2c0420 fixup! block: parse captions 2023-02-05 20:36:40 +01:00
Noah Hellman
e56f6b2e67 fixup! block: parse tables 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
8339befe2f block: parse captions 2023-02-05 20:36:40 +01:00
Noah Hellman
99f10fda4c tree: allow exiting empty containers 2023-02-05 20:36:40 +01:00
Noah Hellman
46fcb17108 html: write header tags 2023-02-05 20:36:40 +01:00
Noah Hellman
c288264aee block: parse tables 2023-02-05 20:36:40 +01:00
Noah Hellman
6ec5b09367 tnoheu 2023-02-05 20:36:40 +01:00
Noah Hellman
50287ca9da Revert "block: override roman list with alpha if encountered"
This reverts commit 7bdccbef65cf76da4cffaa3cac9b3f139f945036.
2023-02-05 20:36:40 +01:00
Noah Hellman
5714e72939 parser: parse roman numerals 2023-02-05 20:36:40 +01:00
Noah Hellman
6fbea2f9b3 block: override roman list with alpha if encountered
i.e

    i) a
    j) b

where i) initially makes list RomanLower, but j) then overrides it to
AlphaLower
2023-02-05 20:36:40 +01:00
Noah Hellman
a661a2febb parser: parse AlphaLower/Upper numbers 2023-02-05 20:36:40 +01:00
Noah Hellman
35beb18dad fixup! block: fix container indent trim on enter 2023-02-05 20:36:40 +01:00
Noah Hellman
e5c4ca5450 fixup! 238e445f3012485d96aba81ca01ee45d7ba97370 2023-02-05 20:36:40 +01:00
Noah Hellman
fd977ca6c8 fixup! wipppp 2023-02-05 20:36:40 +01:00
Noah Hellman
c02b13327c fixup! 68b47e4b64caec48783d8e001c5d58f6c9de9044 2023-02-05 20:36:40 +01:00
Noah Hellman
64c7678775 block: fix container indent trim on enter 2023-02-05 20:36:40 +01:00
Noah Hellman
ec69d98c75 amend! parser: determine tight vs loose lists
block: determine tight vs loose lists
2023-02-05 20:36:40 +01:00
Noah Hellman
c4a9a3e0b0 fixup! block: parse list item 2023-02-05 20:36:40 +01:00
Noah Hellman
a9ce70aae3 html: render tight lists 2023-02-05 20:36:40 +01:00
Noah Hellman
69d51a5032 fixup! parser: determine tight vs loose lists 2023-02-05 20:36:40 +01:00
Noah Hellman
845c56fd0b parser: test nested list 2023-02-05 20:36:40 +01:00
Noah Hellman
70d29c65e4 parser: determine tight vs loose lists 2023-02-05 20:36:40 +01:00
Noah Hellman
36470af114 tmp remove this 2023-02-05 20:36:40 +01:00
Noah Hellman
7b018ef10c todo: allow roman in alpha 2023-02-05 20:36:40 +01:00
Noah Hellman
83d569d09a fixup! 1669f0e97379fe38e7df6206d1e6815c5e8730fb 2023-02-05 20:36:40 +01:00
Noah Hellman
4ad7e2bf3e fixup! a931e71100663ece89f3c8dbfa67c02414d40436 2023-02-05 20:36:40 +01:00
Noah Hellman
1f71df82ef html: render lists, list items 2023-02-05 20:36:40 +01:00
Noah Hellman
2f616c41b7 parser: parse lists and list items 2023-02-05 20:36:40 +01:00
Noah Hellman
6befcad52a parse: merge enter / exit block events match branch 2023-02-05 20:36:40 +01:00
Noah Hellman
50632204a3 block: emit list events around list items 2023-02-05 20:36:40 +01:00
Noah Hellman
3123bd1a57 fixup! fix dbg print disp -> dbg 2023-02-05 20:36:40 +01:00
Noah Hellman
fb8a4c4a55 fixup! 427f999d61542d21221da4626ebbabb3ded51d63 2023-02-05 20:36:40 +01:00
Noah Hellman
5e8c683050 fixup! tree: add tree branch reference 2023-02-05 20:36:40 +01:00
Noah Hellman
a62eb3e1d8 fixup! e1843f1913dbbbc85414b05268ef554676168a6b 2023-02-05 20:36:40 +01:00
Noah Hellman
0f7ef85f6e fixup! add block parser in addition to block tree parser 2023-02-05 20:36:40 +01:00
Noah Hellman
7a5ef1e695 fixup! 6a1fcf07cc01a64ab2665cbe249bc5b047869e37 2023-02-05 20:36:40 +01:00
Noah Hellman
73baa48706 doc 2023-02-05 20:36:40 +01:00
Noah Hellman
d8aba07db3 fixup! wip 2023-02-05 20:36:40 +01:00
Noah Hellman
44a6961beb block: parse list item 2023-02-05 20:36:40 +01:00
Noah Hellman
7ce78f95fa block: trim inline indentation 2023-02-05 20:36:40 +01:00
Noah Hellman
b2d39e3ded lex: let closing BraceEqual have - after Hyphen seq
e.g. ---} -> -- + -} instead of --- + }
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
42ca801712 rm from_container_block 2023-02-05 20:36:40 +01:00
Noah Hellman
0e171c2cf2 html: filter out blanklines, escape
These are not visible, but the blankline breaks the peek for
End(Footnote) to detect whether to append the last paragraph with a
backreference link. A peek will now find the end event instead of an
invisible blankline.
2023-02-05 20:36:40 +01:00
Noah Hellman
8ccfb4c603 render footnotes 2023-02-05 20:36:40 +01:00
Noah Hellman
cbead322ed fixup! tree: add tree branch reference 2023-02-05 20:36:40 +01:00
Noah Hellman
726f1bc7b0 fixup! parser: impl link references 2023-02-05 20:36:40 +01:00
Noah Hellman
56190c4b0d fixup! parser: impl link references 2023-02-05 20:36:40 +01:00
Noah Hellman
ce6447476c fixup! parser: impl link references 2023-02-05 20:36:40 +01:00
Noah Hellman
412067a190 tree: add Branch::branch
will be used to defer inline parsing of footnotes
2023-02-05 20:36:40 +01:00
Noah Hellman
1dde9e57e2 borrow link def url if on single line 2023-02-05 20:36:40 +01:00
Noah Hellman
c7b3aa560b tree: add tree branch reference
allow multiple independent iterators for the same underlying tree

safety: not very good, but should work because original tree is kept in
Parser and branches are only used during its lifetime
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
6af5c5c884 fixup! parse inline attrs 2023-02-05 20:36:40 +01:00
Noah Hellman
4fad0e9050 fixup! block attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
ecf49100f4 fixup! parser: impl link references 2023-02-05 20:36:40 +01:00
Noah Hellman
6c5fcbf57d parser: impl link references 2023-02-05 20:36:40 +01:00
Noah Hellman
a4511db0a8 html: skip href attr when url empty 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
5f9a72545b lib: raw blocks 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
6e28b0e162 html: ignore attrs on inline quotes 2023-02-05 20:36:40 +01:00
Noah Hellman
8024499069 html: output attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
eb6b58f2a9 fixup! block attributes 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
6bd30f1a58 fixup! mv spans to separate span file 2023-02-05 20:36:40 +01:00
Noah Hellman
b0565eb4c6 rm unused var 2023-02-05 20:36:40 +01:00
Noah Hellman
0816ab4dcb mv inline span structs to span module 2023-02-05 20:36:40 +01:00
Noah Hellman
59664feaf3 fixup! parse inline attrs 2023-02-05 20:36:40 +01:00
Noah Hellman
8d676e1431 parse inline attrs 2023-02-05 20:36:40 +01:00
Noah Hellman
1586c2947f fixup! block attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
a1bcc4277d fixup! inline: impl container attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
666e9cfd40 fixup! block attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
c0183d4524 inline: impl container attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
73d3e05f0a fixup! wip fix span / typeset precedence 2023-02-05 20:36:40 +01:00
Noah Hellman
9dd10a558f fixup! block attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
653bd59eb5 stuuoestnhunoestuh 2023-02-05 20:36:40 +01:00
Noah Hellman
d8d464902a wip fix span / typeset precedence 2023-02-05 20:36:40 +01:00
Noah Hellman
352be02ccf block attributes 2023-02-05 20:36:40 +01:00
Noah Hellman
be333b8715 stuufff 2023-02-05 20:36:40 +01:00
Noah Hellman
5ac05d1919 img 2023-02-05 20:36:40 +01:00
Noah Hellman
cd54416902 fixup! pre remove atomic state 2023-02-05 20:36:40 +01:00
Noah Hellman
6fdbd09cd1 discontinuous spans 2023-02-05 20:36:40 +01:00
Noah Hellman
903578b04d add cowstr 2023-02-05 20:36:40 +01:00
Noah Hellman
f74ea7a138 span tag / url 2023-02-05 20:36:40 +01:00
Noah Hellman
f6fa422e6b refactorzzz 2023-02-05 20:36:40 +01:00
Noah Hellman
81a4edb884 inline: get rid of verbatim state 2023-02-05 20:36:40 +01:00
Noah Hellman
8957907141 fix dbg print disp -> dbg 2023-02-05 20:36:40 +01:00
Noah Hellman
3339e785a7 maybe functional multi-line inline 2023-02-05 20:36:40 +01:00
Noah Hellman
946d88e5c0 pre remove atomic state 2023-02-05 20:36:40 +01:00
Noah Hellman
227c86f4f0 atomic state wip 2023-02-05 20:36:40 +01:00
Noah Hellman
463f146623 need_more -> ready 2023-02-05 20:36:39 +01:00
Noah Hellman
e798dc9c28 raw inline format 2023-02-05 20:36:39 +01:00
Noah Hellman
72bedb53b4 fixup! lexer peekable 2023-02-05 20:36:39 +01:00
Noah Hellman
7c53d1a093 add inline State 2023-02-05 20:36:39 +01:00
Noah Hellman
3c5093f4db lexer peekable 2023-02-05 20:36:39 +01:00
Noah Hellman
13850978c1 noeutnhoesntuh 2023-02-05 20:36:39 +01:00
Noah Hellman
c4e4be7bce add block parser in addition to block tree parser 2023-02-05 20:36:39 +01:00
Noah Hellman
3a70cd8255 wipppp 2023-02-05 20:36:39 +01:00
Noah Hellman
5afc6a41a8 wip 2023-02-05 20:36:39 +01:00
Noah Hellman
60927e7298 fixup! parse block elements 2023-02-05 20:36:39 +01:00
Noah Hellman
89390cf5f6 handle html escapes in html mod 2023-02-05 20:36:39 +01:00
Noah Hellman
564256f1b8 print tree 2023-02-05 20:36:39 +01:00
Noah Hellman
2303cf3574 verbatim fix 2023-02-05 20:36:39 +01:00
Noah Hellman
a994228bb5 lib wip 2023-02-05 20:36:39 +01:00
Noah Hellman
c53988cc47 block wip 2023-02-05 20:36:39 +01:00
Noah Hellman
8a525f753b wip 2023-02-05 20:36:39 +01:00
Noah Hellman
4e1ada5836 wip 2023-02-05 20:36:39 +01:00
Noah Hellman
8bdb598e6c fixup! parse block elements 2023-02-05 20:36:39 +01:00
Noah Hellman
75b13597da fixup! e18f24b99d70338014ab8e4031fad9a17b167b8f 2023-02-05 20:36:39 +01:00
Noah Hellman
5755616870 fixup! 3b4b2e0259b2e84c8199c6f416e2c4f8d466e431 2023-02-05 20:36:39 +01:00
Noah Hellman
5e3d0e9666 fixup! 73917a033374a26c70dce571639e43ecfc09434d 2023-02-05 20:36:39 +01:00
Noah Hellman
c6e971d7e0 fixup! 1ef07886ce5f38074627ae016bb43dcc17e9eb46 2023-02-05 20:36:39 +01:00
Noah Hellman
6bda70bd09 fixup! bac7bc5c6b04c4697063833550d42fb639e9d994 2023-02-05 20:36:39 +01:00
Noah Hellman
dc689f976f fixup! test_parse, test_block 2023-02-05 20:36:39 +01:00
Noah Hellman
0d7b19c3d4 fixup! 8f3daefd9e69a6457cd20fdbcaa5189734d4e67b 2023-02-05 20:36:39 +01:00
Noah Hellman
7f540505a8 fixup! 6119d912876deec27ba2e97f160a044e3dc08819 2023-02-05 20:36:39 +01:00
Noah Hellman
6a0c1ca3f8 fixup! 21784e2a57450d4ca120f62c317331c6feb1cbbd 2023-02-05 20:36:39 +01:00
Noah Hellman
e080b16bf7 fixup! parse block elements 2023-02-05 20:36:39 +01:00
Noah Hellman
80911deb76 fixup! wip inlin passing 2023-02-05 20:36:39 +01:00
Noah Hellman
61dfa91db3 fixup! 37267afca9bb0d048643ae663ec4a9855ce2fff0 2023-02-05 20:36:39 +01:00