2010-03-04 4 views
3

Есть ли способ указать форматирование «довольно-печатного» вокруг HTML-тегов? Я хочу, чтобы иметь возможность поставить пробел между блоками HTML, так что:Пробелы между тегами в HAML

<!-- container --> 
<div id='container'> 
</div> 
<!-- footer --> 
<div id="footer"> 
</div> 
<!-- analytics --> 
... 

... преобразуется к следующему:

<!-- container --> 
<div id='container'> 
</div> 


<!-- footer --> 
<div id="footer"> 
</div> 


<!-- analytics --> 
... 

Я знаю, что вы можете сделать комментарии с /, есть что-то как это для пробелов между тегами? Может быть что-то вроде этого

/ container 
#container 
\ 
\ 
/footer 
#footer 
:s 
:s 
/analytics 

Где \ или :s может быть пользовательские фильтры?

Или что-то вроде = space(10) за 10 разрывов? Или, может быть, даже ~ сам по себе, но это не работает.

+0

Мое личное мнение по этому вопросу является что сгенерированный HTML не для человека, чтобы читать, но для машины, поэтому пробелы не должны иметь никакого значения. Для отладки структуры документа инструменты Firebug/Web Inspector гораздо более полезны, и особенно с HAML вам не нужно беспокоиться о действительности готового HTML в любом случае. Значит, зачем беспокоиться об этом? Как я уже сказал, это ИМО и не отвечает на ваш вопрос ... :) – deceze

ответ

5
#container 
- haml_concat("\n" * 5) 
#footer 

Помощник haml_concat непосредственно присоединяет текст на выходной буфер, без какой-либо предварительной обработки.

+0

есть! благодаря :) –

1

Вы можете evaluate Ruby block вставить дополнительные символы новой строки:

.main 
    .container 
    %p Something 

    ~ "\n" * 5 

    .footer 
    %p Footer 

Это также использует ~ - whitespace preservation.

+0

Я пытался это сделать, но на самом деле он не выводит html с 5 строками между тегами, всего 1: /. в настоящее время вам придется иметь 5 ~, по одному на каждой строке, что слишком сильно затмевает все. –

0
\#container 
= ('< br />'*5).html_safe 

\#footer 
0

я написал специальный фильтр для такого рода вещи: https://gist.github.com/dmitry/6050231

Чтобы использовать это, вам просто нужно добавить :s, как в вашем примере:

#footer 
:s 
:s 
/analytics 
Смежные вопросы