diff --git a/src/html.rs b/src/html.rs index c0f7864..51e21d5 100644 --- a/src/html.rs +++ b/src/html.rs @@ -49,24 +49,8 @@ enum Raw { Other, } -struct FilteredEvents { - events: I, -} - -impl<'s, I: Iterator>> Iterator for FilteredEvents { - type Item = Event<'s>; - - fn next(&mut self) -> Option { - let mut ev = self.events.next(); - while matches!(ev, Some(Event::Blankline | Event::Escape)) { - ev = self.events.next(); - } - ev - } -} - struct Writer<'s, I: Iterator>, W> { - events: std::iter::Peekable>, + events: I, out: W, raw: Raw, img_alt_text: usize, @@ -80,7 +64,7 @@ struct Writer<'s, I: Iterator>, W> { impl<'s, I: Iterator>, W: std::fmt::Write> Writer<'s, I, W> { fn new(events: I, out: W) -> Self { Self { - events: FilteredEvents { events }.peekable(), + events, out, raw: Raw::None, img_alt_text: 0, @@ -94,6 +78,10 @@ impl<'s, I: Iterator>, W: std::fmt::Write> Writer<'s, I, W> { fn write(&mut self) -> std::fmt::Result { while let Some(e) = self.events.next() { + if matches!(&e, Event::Blankline | Event::Escape) { + continue; + } + let close_para = self.close_para; if close_para { self.close_para = false;