From a1bcc4277d8e90db02abe91b89e38a1bbf1f5ef7 Mon Sep 17 00:00:00 2001 From: Noah Hellman Date: Sat, 14 Jan 2023 12:14:31 +0100 Subject: [PATCH] fixup! inline: impl container attributes --- src/inline.rs | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/inline.rs b/src/inline.rs index 27f1fb5..2eb6938 100644 --- a/src/inline.rs +++ b/src/inline.rs @@ -271,15 +271,15 @@ impl + Clone> Parser { }; self.openers.drain(o..); let mut ahead = self.lexer.inner().clone(); - let attr_len = attr::valid(&mut ahead); - dbg!(self.span); - dbg!(attr_len); + let mut attr_len = attr::valid(&mut ahead); if attr_len > 0 { - self.lexer = lex::Lexer::new(ahead); - let span = Span::by_len(self.span.end(), attr_len); - self.events[e_attr] = Event { - kind: EventKind::Attributes, - span, + self.events[e_attr].span = Span::empty_at(self.span.end()); + self.events[e_attr].kind = EventKind::Attributes; + while attr_len > 0 { + self.lexer = lex::Lexer::new(ahead.clone()); + self.span = self.events[e_attr].span.extend(attr_len); + self.events[e_attr].span = self.span; + attr_len = attr::valid(&mut ahead); } } event @@ -776,4 +776,16 @@ mod test { (Exit(Emphasis), "_"), ); } + + #[test] + fn container_attr_multiple() { + test_parse!( + "_abc def_{.a}{.b}{.c} {.d}", + (Attributes, "{.a}{.b}{.c}"), + (Enter(Emphasis), "_"), + (Str, "abc def"), + (Exit(Emphasis), "_"), + (Str, " {.d}"), + ); + } }