diff --git a/src/html.rs b/src/html.rs
index 96625ea..f4a1d7c 100644
--- a/src/html.rs
+++ b/src/html.rs
@@ -48,8 +48,24 @@ enum Raw {
Other,
}
-struct Writer {
- events: std::iter::Peekable,
+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::Atom(Atom::Blankline | Atom::Escape))) {
+ ev = self.events.next();
+ }
+ ev
+ }
+}
+
+struct Writer<'s, I: Iterator
- >, W> {
+ events: std::iter::Peekable>,
out: W,
raw: Raw,
text_only: bool,
@@ -58,10 +74,10 @@ struct Writer {
footnote_backlink_written: bool,
}
-impl<'s, I: Iterator
- >, W: std::fmt::Write> Writer {
+impl<'s, I: Iterator
- >, W: std::fmt::Write> Writer<'s, I, W> {
fn new(events: I, out: W) -> Self {
Self {
- events: events.peekable(),
+ events: FilteredEvents { events }.peekable(),
out,
raw: Raw::None,
text_only: false,
@@ -324,7 +340,7 @@ impl<'s, I: Iterator
- >, W: std::fmt::Write> Writer {
Atom::NonBreakingSpace => self.out.write_str(" ")?,
Atom::Hardbreak => self.out.write_str("
\n")?,
Atom::Softbreak => self.out.write_char('\n')?,
- Atom::Blankline | Atom::Escape => {}
+ Atom::Escape | Atom::Blankline => unreachable!("filtered out"),
},
}
}