Маруку неправильно анализирует вторую строку кодовых блоков?
Вопрос
Я использую Maruku (Ruby), чтобы проанализировать несколько форматированных текстов. У меня есть проблема при попытке отформатировать блок 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>
Я проверил свой ввод Marckdown с «Dingus» Грубера, и он воспроизводит, как я ожидал (то есть обе строки кода в одном блоке, обе отступы на одном уровне). Но с Маруку это койка.
Я также пытался с 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!");
Решение
Оказывается, это была не проблема Маруку, а проблема с ХАМП.
Хэмл суетлив, когда дело доходит до пробела и сохраняет его. Решение было необходимо использовать = preserve @my_html_string
При его рендеринге.
Например, приведено layout.haml
:
!!! 5
%html
%body
= yield
а также index.haml
%article
= preserve @my_html_fragment_with_pre_and_code
Тогда это будет правильно для меня.