diff options
| author | Mara Bos <m-ou.se@m-ou.se> | 2020-11-17 10:06:13 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-17 10:06:13 +0100 |
| commit | cf349567e44a704a496af3933054ae554e529b18 (patch) | |
| tree | 9aeecba1497af764495843bb1af2ec30d5b945a8 | |
| parent | b5c37e86ff1782923e3abfbf5491dd383fcf827d (diff) | |
| parent | 0c52044528580fb5b02eb0dca7bbbe3e584d6b13 (diff) | |
| download | rust-cf349567e44a704a496af3933054ae554e529b18.tar.gz rust-cf349567e44a704a496af3933054ae554e529b18.zip | |
Rollup merge of #77939 - GuillaumeGomez:fix-source-code-dos-backline, r=jyn514
Ensure that the source code display is working with DOS backline Fixes #76361. cc ````@lzutao```` r? ````@jyn514````
| -rw-r--r-- | src/librustdoc/html/highlight.rs | 4 | ||||
| -rw-r--r-- | src/librustdoc/html/highlight/fixtures/dos_line.html | 3 | ||||
| -rw-r--r-- | src/librustdoc/html/highlight/tests.rs | 32 |
3 files changed, 27 insertions, 12 deletions
diff --git a/src/librustdoc/html/highlight.rs b/src/librustdoc/html/highlight.rs index 22233731411..48518ef0dd8 100644 --- a/src/librustdoc/html/highlight.rs +++ b/src/librustdoc/html/highlight.rs @@ -46,7 +46,9 @@ fn write_header(out: &mut String, class: Option<&str>) { } fn write_code(out: &mut String, src: &str) { - Classifier::new(src).highlight(&mut |highlight| { + // This replace allows to fix how the code source with DOS backline characters is displayed. + let src = src.replace("\r\n", "\n"); + Classifier::new(&src).highlight(&mut |highlight| { match highlight { Highlight::Token { text, class } => string(out, Escape(text), class), Highlight::EnterSpan { class } => enter_span(out, class), diff --git a/src/librustdoc/html/highlight/fixtures/dos_line.html b/src/librustdoc/html/highlight/fixtures/dos_line.html new file mode 100644 index 00000000000..4400f85681d --- /dev/null +++ b/src/librustdoc/html/highlight/fixtures/dos_line.html @@ -0,0 +1,3 @@ +<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">foo</span>() { +<span class="macro">println</span><span class="macro">!</span>(<span class="string">"foo"</span>); +} diff --git a/src/librustdoc/html/highlight/tests.rs b/src/librustdoc/html/highlight/tests.rs index c79471b1fae..f57f52d6f08 100644 --- a/src/librustdoc/html/highlight/tests.rs +++ b/src/librustdoc/html/highlight/tests.rs @@ -1,17 +1,6 @@ use super::write_code; use expect_test::expect_file; -#[test] -fn test_html_highlighting() { - let src = include_str!("fixtures/sample.rs"); - let html = { - let mut out = String::new(); - write_code(&mut out, src); - format!("{}<pre><code>{}</code></pre>\n", STYLE, out) - }; - expect_file!["fixtures/sample.html"].assert_eq(&html); -} - const STYLE: &str = r#" <style> .kw { color: #8959A8; } @@ -23,3 +12,24 @@ const STYLE: &str = r#" .question-mark { color: #ff9011; } </style> "#; + +#[test] +fn test_html_highlighting() { + let src = include_str!("fixtures/sample.rs"); + let html = { + let mut out = String::new(); + write_code(&mut out, src); + format!("{}<pre><code>{}</code></pre>\n", STYLE, out) + }; + expect_file!["fixtures/sample.html"].assert_eq(&html); +} + +#[test] +fn test_dos_backline() { + let src = "pub fn foo() {\r\n\ + println!(\"foo\");\r\n\ +}\r\n"; + let mut html = String::new(); + write_code(&mut html, src); + expect_file!["fixtures/dos_line.html"].assert_eq(&html); +} |
