Маруку неправильно анализирует вторую строку блоков кода? - PullRequest
3 голосов
/ 13 июня 2011

Я использую 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!");

Я проверил свой вход 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 Ответ

7 голосов
/ 13 июня 2011

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

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

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

!!! 5
%html
    %body
        = yield

и index.haml

%article
    = preserve @my_html_fragment_with_pre_and_code

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

...