diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-08-30 15:00:18 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-09-07 11:07:17 +0200 |
| commit | 0d12f2ab23177642eef2e6bb9c583cdd0c743b33 (patch) | |
| tree | 03a88594081dcf360d0d880167feb1debca970e6 /src/parse/mod.rs | |
| parent | 0cb876ebf9138c1ee3b3c87165952a73569ffb28 (diff) | |
[WIP] Label and reference syntax
Diffstat (limited to 'src/parse/mod.rs')
| -rw-r--r-- | src/parse/mod.rs | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/parse/mod.rs b/src/parse/mod.rs index a997421e..0737d4ca 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -175,18 +175,24 @@ fn markup_indented(p: &mut Parser, min_indent: usize) { _ => false, }); + let marker = p.marker(); let mut at_start = false; - p.perform(NodeKind::Markup { min_indent }, |p| { - while !p.eof() { - if let Some(NodeKind::Space { newlines: (1 ..) }) = p.peek() { - if p.column(p.current_end()) < min_indent { - break; - } - } - markup_node(p, &mut at_start); + while !p.eof() { + match p.peek() { + Some(NodeKind::Space { newlines: (1 ..) }) + if p.column(p.current_end()) < min_indent => + { + break; + } + Some(NodeKind::Label(_)) => break, + _ => {} } - }); + + markup_node(p, &mut at_start); + } + + marker.end(p, NodeKind::Markup { min_indent }); } /// Parse a markup node. @@ -212,16 +218,18 @@ fn markup_node(p: &mut Parser, at_start: &mut bool) { // Text and markup. NodeKind::Text(_) + | NodeKind::Linebreak { .. } | NodeKind::NonBreakingSpace | NodeKind::Shy | NodeKind::EnDash | NodeKind::EmDash | NodeKind::Ellipsis | NodeKind::Quote { .. } - | NodeKind::Linebreak { .. } + | NodeKind::Escape(_) | NodeKind::Raw(_) | NodeKind::Math(_) - | NodeKind::Escape(_) => { + | NodeKind::Label(_) + | NodeKind::Ref(_) => { p.eat(); } |
