Маруку неправильно анализирует вторую строку блоков кода?
Я использую 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
Тогда это будет правильно для меня.