开发者

Maruku incorrectly parsing second line of code blocks?

开发者 https://www.devze.com 2023-03-12 04:13 出处:网络
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:

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("S开发者_C百科econd 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.

0

精彩评论

暂无评论...
验证码 换一张
取 消