From a7f5b337a8414d9119e74abc19b9249bee3fb5ea Mon Sep 17 00:00:00 2001 From: Noah Hellman Date: Tue, 21 Feb 2023 17:56:05 +0100 Subject: [PATCH] inline: fix attrs missing for inline verbatim closes #15 --- src/inline.rs | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/inline.rs b/src/inline.rs index 7b28a5a..6e8f585 100644 --- a/src/inline.rs +++ b/src/inline.rs @@ -163,6 +163,11 @@ impl + Clone> Parser { _ => None, } .map(|(mut kind, opener_len)| { + let e_attr = self.events.len(); + self.events.push_back(Event { + kind: EventKind::Placeholder, + span: Span::empty_at(self.span.start()), + }); let opener_event = self.events.len(); self.events.push_back(Event { kind: EventKind::Enter(kind), @@ -241,10 +246,22 @@ impl + Clone> Parser { span: span_inner, }); - Event { + let ev = Event { kind: EventKind::Exit(kind), span: span_outer.unwrap_or(self.span), + }; + + if let Some((non_empty, span)) = self.ahead_attributes() { + self.span = span; + if non_empty { + self.events[e_attr] = Event { + kind: EventKind::Attributes, + span, + }; + } } + + ev }) } @@ -909,6 +926,19 @@ mod test { ); } + #[test] + fn verbatim_attr() { + test_parse!( + "pre `raw`{#id} post", + (Str, "pre "), + (Attributes, "{#id}"), + (Enter(Verbatim), "`"), + (Str, "raw"), + (Exit(Verbatim), "`"), + (Str, " post"), + ); + } + #[test] fn verbatim_whitespace() { test_parse!(