diff options
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(); } |
