Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Strip trailing newlines in unhighlighted code blocks #528

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/html.rs
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,10 @@ where
let mut code_attributes: HashMap<String, String> = HashMap::new();
let code_attr: String;

let literal = &ncb.literal.as_bytes();
let literal = &ncb
.literal
.trim_end_matches(|c| c == '\r' || c == '\n')
.as_bytes();
let info = &ncb.info.as_bytes();

if !info.is_empty() {
Expand Down
12 changes: 6 additions & 6 deletions src/parser/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -699,11 +699,11 @@ pub struct ParseOptions<'c> {
/// # use comrak::{markdown_to_html, Options};
/// let mut options = Options::default();
/// assert_eq!(markdown_to_html("```\nfn hello();\n```\n", &options),
/// "<pre><code>fn hello();\n</code></pre>\n");
/// "<pre><code>fn hello();</code></pre>\n");
///
/// options.parse.default_info_string = Some("rust".into());
/// assert_eq!(markdown_to_html("```\nfn hello();\n```\n", &options),
/// "<pre><code class=\"language-rust\">fn hello();\n</code></pre>\n");
/// "<pre><code class=\"language-rust\">fn hello();</code></pre>\n");
/// ```
pub default_info_string: Option<String>,

Expand Down Expand Up @@ -789,11 +789,11 @@ pub struct RenderOptions {
/// # use comrak::{markdown_to_html, Options};
/// let mut options = Options::default();
/// assert_eq!(markdown_to_html("``` rust\nfn hello();\n```\n", &options),
/// "<pre><code class=\"language-rust\">fn hello();\n</code></pre>\n");
/// "<pre><code class=\"language-rust\">fn hello();</code></pre>\n");
///
/// options.render.github_pre_lang = true;
/// assert_eq!(markdown_to_html("``` rust\nfn hello();\n```\n", &options),
/// "<pre lang=\"rust\"><code>fn hello();\n</code></pre>\n");
/// "<pre lang=\"rust\"><code>fn hello();</code></pre>\n");
/// ```
#[cfg_attr(feature = "bon", builder(default))]
pub github_pre_lang: bool,
Expand All @@ -804,7 +804,7 @@ pub struct RenderOptions {
/// # use comrak::{markdown_to_html, Options};
/// let mut options = Options::default();
/// assert_eq!(markdown_to_html("``` rust extra info\nfn hello();\n```\n", &options),
/// "<pre><code class=\"language-rust\">fn hello();\n</code></pre>\n");
/// "<pre><code class=\"language-rust\">fn hello();</code></pre>\n");
///
/// options.render.full_info_string = true;
/// let html = markdown_to_html("``` rust extra info\nfn hello();\n```\n", &options);
Expand Down Expand Up @@ -1110,7 +1110,7 @@ pub struct RenderPlugins<'p> {
/// let input = "```rust\nfn main<'a>();\n```";
///
/// assert_eq!(markdown_to_html_with_plugins(input, &options, &plugins),
/// "<pre><code class=\"language-rust\">fn main&lt;'a&gt;();\n</code></pre>\n");
/// "<pre><code class=\"language-rust\">fn main&lt;'a&gt;();</code></pre>\n");
///
/// pub struct MockAdapter {}
/// impl SyntaxHighlighterAdapter for MockAdapter {
Expand Down
5 changes: 1 addition & 4 deletions src/tests/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,7 @@ fn basic() {
fn codefence() {
html(
concat!("``` rust yum\n", "fn main<'a>();\n", "```\n"),
concat!(
"<pre><code class=\"language-rust\">fn main&lt;'a&gt;();\n",
"</code></pre>\n"
),
concat!("<pre><code class=\"language-rust\">fn main&lt;'a&gt;();</code></pre>\n"),
);
}

Expand Down
3 changes: 1 addition & 2 deletions src/tests/footnotes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ fn footnotes() {
"<li id=\"fn-longnote\">\n",
"<p>Here's one with multiple blocks.</p>\n",
"<p>Subsequent paragraphs are indented.</p>\n",
"<pre><code>code\n",
"</code></pre>\n",
"<pre><code>code</code></pre>\n",
"<a href=\"#fnref-longnote\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"2\" aria-label=\"Back to reference 2\">↩</a> \
<a href=\"#fnref-longnote-2\" class=\"footnote-backref\" data-footnote-backref data-footnote-backref-idx=\"2-2\" aria-label=\"Back to reference 2-2\">↩<sup class=\"footnote-ref\">2</sup></a>\n",
"</li>\n",
Expand Down
Loading