سؤال

I'm using Maruku (Ruby) to parse some Markdown formatted text. I have a problem when trying to format a block of code like such:

This is a normal line
# pretend this line is empty
    printf("First line of code is OK");
    printf("Second line of code (or any line thereafter) appears indented by an extra level, which is incorrect!");

So my first line of code (which I've indented in my md file by 4 spaces (or a tab), renders just as I'd expect. However, my second line of code (indented by exactly the same number of spaces) ends up being indented by an extra 4 spaces when the HTML is generated.

The output looks like this:

This is a normal line
<pre><code>printf("First line of code is OK");
      printf("Second line of code (or any line thereafter) appears indented by an extra level, which is incorrect!");</code></pre>

I've tested my Markdown input with Gruber's "Dingus", and it renders as I'd expect (that is, both lines of code in a single block, both indented at the same level). But with Maruku, it's bunk.

I've also tried with RDiscount, but I get the same effect. I'm using Maruku because I need definition lists.

How SO formats it:

This is a normal line

printf("First line of code is OK\n");
printf("Second line of code (or any line thereafter) appears indented by an extra level, which is incorrect!");
هل كانت مفيدة؟

المحلول

It turns out this was not a Maruku problem but a HAML problem.

HAML is fussy when it comes to whitespace and preserving it. The solution was needing to use = preserve @my_html_string when rendering it.

For example, given layout.haml:

!!! 5
%html
    %body
        = yield

and index.haml

%article
    = preserve @my_html_fragment_with_pre_and_code

Then it would render correctly for me.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top