diff --git a/src/html.rs b/src/html.rs
index cd8580e..8ea8b0d 100644
--- a/src/html.rs
+++ b/src/html.rs
@@ -145,7 +145,29 @@ impl<'s, I: Iterator- >, W: std::fmt::Write> Writer {
Container::DoubleQuoted => self.out.write_str("”")?,
}
}
- Event::Str(s) => self.out.write_str(s)?,
+ Event::Str(mut s) => {
+ let mut ent = "";
+ while let Some(i) = s.chars().position(|c| {
+ if let Some(s) = match c {
+ '<' => Some("<"),
+ '>' => Some(">"),
+ '&' => Some("&"),
+ '"' => Some("""),
+ _ => None,
+ } {
+ ent = s;
+ true
+ } else {
+ false
+ }
+ }) {
+ self.out.write_str(&s[..i])?;
+ self.out.write_str(ent)?;
+ s = &s[i + 1..];
+ }
+ self.out.write_str(s)?;
+ }
+
Event::Atom(a) => match a {
Atom::Ellipsis => self.out.write_str("…")?,
Atom::EnDash => self.out.write_str("–")?,
diff --git a/src/inline.rs b/src/inline.rs
index 5fd5ec9..1ea052f 100644
--- a/src/inline.rs
+++ b/src/inline.rs
@@ -125,6 +125,8 @@ impl<'s> Parser<'s> {
fn parse_atom(&mut self, first: &lex::Token) -> Option {
let atom = match first.kind {
+ lex::Kind::Newline => Softbreak,
+ lex::Kind::Hardbreak => Hardbreak,
lex::Kind::Escape => Escape,
lex::Kind::Nbsp => Nbsp,
lex::Kind::Seq(lex::Sequence::Period) if first.len == 3 => Ellipsis,