Using Redcarpet, when I include something like the following in my markdown, it does not respect any line breaks or indention. I've tried two spaces at the end of lines. Extra lines between code. Nothing seems to work.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<money>3</money>
</hash>
```
I see:
<?xml version="1.0" encoding="UTF-8"?> <hash> <money>3</money> </hash>
Here are the Redcarpet settings:
Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true, :fenced_code_blocks => true, :no_intra_emphasis => true, :lax_html_blocks => true)
What do I need to do to make the lines break properly and preserve indention, just like here or on GitHub?
Update - And the source looks like:
<pre><code><?xml version="1.0" encoding="UTF-8"?>
<hash>
<money>3</money>
</hash>
</code></pre>
find_and_preserve
Haml helper# Assuming a setup like this:
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
code_snippet = " <xml>\n <tag/>\n </xml>"
# This should prevent undesirable spaces within code blocks:
find_and_preserve(markdown.render(code_snippet)).html_safe
When you wrap the render call with the find_and_preserve
Haml helper, all newlines within <pre>
tags in the markdown output are escaped with equivalent HTML entities, and the Haml auto-indention will then ignore them.
The result of parsing has newlines inside a <pre>
block for me:
require 'redcarpet'
md = Redcarpet::Markdown.new(Redcarpet::Render::HTML, fenced_code_blocks:true)
puts md.render("```xml\n<foo>\n</foo>\n```")
#=> <pre><code class="xml"><foo>
#=> </foo>
#=> </code></pre>
Set your CSS to use preformatting in <pre>
blocks:
pre { white-space:pre }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With