diff --git a/src/renderer/html_handlebars/hbs_renderer.rs b/src/renderer/html_handlebars/hbs_renderer.rs
index b933a359..94669cf0 100644
--- a/src/renderer/html_handlebars/hbs_renderer.rs
+++ b/src/renderer/html_handlebars/hbs_renderer.rs
@@ -904,13 +904,16 @@ fn hide_lines(content: &str) -> String {
}
let mut result = String::with_capacity(content.len());
- for line in content.lines() {
+ let mut lines = content.lines().peekable();
+ while let Some(line) = lines.next() {
+ // Don't include newline on the last line.
+ let newline = if lines.peek().is_none() { "" } else { "\n" };
if let Some(caps) = BORING_LINES_REGEX.captures(line) {
if &caps[2] == "#" {
result += &caps[1];
result += &caps[2];
result += &caps[3];
- result += "\n";
+ result += newline;
continue;
} else if &caps[2] != "!" && &caps[2] != "[" {
result += "";
@@ -919,13 +922,13 @@ fn hide_lines(content: &str) -> String {
result += &caps[2];
}
result += &caps[3];
- result += "\n";
+ result += newline;
result += "";
continue;
}
}
result += line;
- result += "\n";
+ result += newline;
}
result
}
@@ -1005,19 +1008,19 @@ mod tests {
fn add_playground() {
let inputs = [
("x()
",
- "
#![allow(unused)]\nfn main() {\nx()\n}\n
"),
+ "#![allow(unused)]\nfn main() {\nx()\n}
"),
("fn main() {}
",
- "fn main() {}\n
"),
+ "fn main() {}
"),
("let s = \"foo\n # bar\n\";
",
- "let s = \"foo\n bar\n\";\n
"),
+ "let s = \"foo\n bar\n\";
"),
("let s = \"foo\n ## bar\n\";
",
- "let s = \"foo\n # bar\n\";\n
"),
+ "let s = \"foo\n # bar\n\";
"),
("let s = \"foo\n # bar\n#\n\";
",
- "let s = \"foo\n bar\n\n\";\n
"),
+ "let s = \"foo\n bar\n\n\";
"),
("let s = \"foo\n # bar\n\";
",
- "let s = \"foo\n bar\n\";\n
"),
+ "let s = \"foo\n bar\n\";
"),
("#![no_std]\nlet s = \"foo\";\n #[some_attr]
",
- "#![no_std]\nlet s = \"foo\";\n #[some_attr]\n
"),
+ "#![no_std]\nlet s = \"foo\";\n #[some_attr]
"),
];
for (src, should_be) in &inputs {
let got = add_playground_pre(
@@ -1035,13 +1038,13 @@ mod tests {
fn add_playground_edition2015() {
let inputs = [
("x()
",
- "#![allow(unused)]\nfn main() {\nx()\n}\n
"),
+ "#![allow(unused)]\nfn main() {\nx()\n}
"),
("fn main() {}
",
- "fn main() {}\n
"),
+ "fn main() {}
"),
("fn main() {}
",
- "fn main() {}\n
"),
+ "fn main() {}
"),
("fn main() {}
",
- "fn main() {}\n
"),
+ "fn main() {}
"),
];
for (src, should_be) in &inputs {
let got = add_playground_pre(
@@ -1059,13 +1062,13 @@ mod tests {
fn add_playground_edition2018() {
let inputs = [
("x()
",
- "#![allow(unused)]\nfn main() {\nx()\n}\n
"),
+ "#![allow(unused)]\nfn main() {\nx()\n}
"),
("fn main() {}
",
- "fn main() {}\n
"),
+ "fn main() {}
"),
("fn main() {}
",
- "fn main() {}\n
"),
+ "fn main() {}
"),
("fn main() {}
",
- "fn main() {}\n
"),
+ "fn main() {}
"),
];
for (src, should_be) in &inputs {
let got = add_playground_pre(
@@ -1083,13 +1086,13 @@ mod tests {
fn add_playground_edition2021() {
let inputs = [
("x()
",
- "#![allow(unused)]\nfn main() {\nx()\n}\n
"),
+ "#![allow(unused)]\nfn main() {\nx()\n}
"),
("fn main() {}
",
- "fn main() {}\n
"),
+ "fn main() {}
"),
("fn main() {}
",
- "fn main() {}\n
"),
+ "fn main() {}
"),
("fn main() {}
",
- "fn main() {}\n
"),
+ "fn main() {}
"),
];
for (src, should_be) in &inputs {
let got = add_playground_pre(