Маруку неправильно анализирует вторую строку блоков кода?

Я использую Maruku (Ruby) для анализа текста в формате Markdown. У меня проблема при попытке отформатировать блок code вроде такой:

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!");

Таким образом, моя первая строка кода (которую я поместил в свой md-файл на 4 пробела (или табуляцию) отображает так, как я и ожидал. Однако моя вторая строка кода (с одинаковым количеством пробелов) в конечном итоге отступ при добавлении 4 пробелов при генерации HTML.

Вывод выглядит так:

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>

Я проверил свой вход Markdown с помощью Druus Грубера, и он рендерится так, как я ожидал (то есть обе строки кода в одном блоке с отступом на одном уровне). Но с Маруку это койка.

Я тоже пробовал с RDiscount, но получаю тот же эффект. Я использую Maruku, потому что мне нужны списки определений.

Как ТАК форматирует это:

Это нормальная линия

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!");

1 ответ

Решение

Оказывается, это была не проблема Маруку, а проблема HAML.

HAML суетлив, когда дело доходит до пробела и его сохранения. Решение нужно было использовать = preserve @my_html_string при рендеринге.

Например, учитывая layout.haml:

!!! 5
%html
    %body
        = yield

а также index.haml

%article
    = preserve @my_html_fragment_with_pre_and_code

Тогда это будет правильно для меня.

Другие вопросы по тегам