Commit graph

326 commits

Author SHA1 Message Date
Noah Hellman
0719b2de65 block: fix class attribute parsing
match reference implementation
2023-03-17 18:57:36 +01:00
Noah Hellman
33d8215a2a html: fix invalid html for footnote inside image 2023-03-17 18:57:36 +01:00
Noah Hellman
c6022004bb html: fix alt text on nested images 2023-03-17 18:57:35 +01:00
Noah Hellman
fc374be56c html: escape img src values 2023-03-17 18:57:10 +01:00
Noah Hellman
5768b24907 html: escape quotes in img alt text 2023-03-17 18:45:20 +01:00
Noah Hellman
648a6dbef2 lib: derive Clone for Event and Container 2023-03-16 20:05:20 +01:00
kmaasrud
e3f39d4b88
feat: support escapes in attributes
Related issue: #1
2023-03-12 08:19:56 +01: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
c3ff064c78 make Event::is_{,container_}block public
this is only used by html renderer, may be useful for other renderers
also
2023-02-12 00:59:18 +01:00
Noah Hellman
413fecfe6a fix/allow clippy lints 2023-02-12 00:59:18 +01:00
kmaasrud
d7f2c0a819 implement Render trait for html::Renderer 2023-02-10 09:46:18 +01:00
kmaasrud
4743781cb9 add Render trait 2023-02-10 09:45:43 +01:00
kmaasrud
896c7004c4 add input and output args to CLI
This commit also adds a help text, accessible with the `--help` flag, as
well as a version text, available by using `--version`. My hope is that
this commit will make the jotdown CLI a bit friendlier to use.
2023-02-08 22:43:07 +01:00
Noah Hellman
b572790ac9 bug: fix tightness, ignore end blanklines 2023-02-07 21:51:31 +01:00
Noah Hellman
0d560901eb block: add Element::list 2023-02-07 21:49:35 +01:00
Noah Hellman
f98ebd477f bug: fix indent of footnote/list inner
when starting multiple blocks on same line, e.g. inner part of

    - - a
      - b

was

     - a
      - b

instead of

     - a
     - b
2023-02-06 23:09:48 +01:00
Noah Hellman
42360d7001 fixup! block: add MeteredBlock as intermediate struct 2023-02-06 23:09:48 +01:00
Noah Hellman
34452a282a features: add flag for html module 2023-02-05 21:59:38 +01:00
Noah Hellman
0de7776020 impl Clone, Copy on public objects 2023-02-05 20:36:49 +01:00
Noah Hellman
477eadde1c document lib API 2023-02-05 20:36:49 +01:00
Noah Hellman
5efb700c9b move atomic events to Event from Atom
An additional Atom enum seems to be more cumbersome and add little
value.

methods could potentially be used to classify events in several ways,
e.g.  block vs inline, atomic vs container
2023-02-05 20:36:49 +01:00
Noah Hellman
2811493c34 html: do not emit newline in beginning 2023-02-05 20:36:49 +01:00
Noah Hellman
7a26476315 fixup! wip djot -> html 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
61f0d6281e rm unused 2023-02-05 20:36:49 +01:00
Noah Hellman
cc5a196149 fixup! parse block elements 2023-02-05 20:36:49 +01:00
Noah Hellman
cc89a06964 fixup! fixup! test_parse, test_block 2023-02-05 20:36:49 +01:00
Noah Hellman
fbd8811c86 block: parse description list 2023-02-05 20:36:49 +01:00
Noah Hellman
95bf52a31e update tree 2023-02-05 20:36:49 +01:00
Noah Hellman
768699d138 optionally use btree maps instead of hash maps
btree maps are deterministic which is useful for fuzzing. hash maps,
however have better performance in our case
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
82adc631d9 allow attributes on thematic breaks 2023-02-05 20:36:49 +01:00
Noah Hellman
670763dd93 fixup! do not treat \0 as EOF 2023-02-05 20:36:49 +01:00
Noah Hellman
59450ed9ad fixup! block: split parse_block function 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
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