Тонкие шаблоны, пользовательский DOCTYPE
У меня есть страница с этим doctype:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
и преобразовать его сейчас в шаблон Slim, но у Slim нет такого doctype
в пресетах, и я подозреваю, что должен быть способ указать пользовательский. Теперь я использую |
:
|<!DOCTYPE html PUBLIC "...skip...>
html
....
Но он отображается без символа разрыва строки после doctype
линия:
<!DOCTYPE html PUBLIC "...skip...><html ...
Что нежелательно, есть ли способ поместить их в отдельные строки?
2 ответа
Чтобы вставить разрыв строки в любой точке шаблона, просто добавьте эту строку:
= "\n"
Команда "=" в Slim выполняет заданный код Ruby и добавляет его в буфер. В этом случае код Ruby - это просто символ новой строки.
Вам не нужно |
Символьный, Slim позволяет встроенный HTML для непосредственного включения HTML, и это включает в себя типы документов. Это не помогает с форматированием, после него все еще нет разрыва строки.
Фактические типы управляются в Temple, который использует Slim. Вы можете изменить это, чтобы добавить собственный тип документа, чтобы получить желаемое поведение. Это включает в себя вмешательство во внутренние данные Temple, поэтому вам нужно быть немного осторожнее, особенно при обновлении, так как внутренние компоненты могли измениться.
Этот хеш был заморожен, поэтому вы не можете просто добавить в него новую запись. Вы можете однако dup
добавьте запись в дублированный хэш и присвойте новый хэш константе. Это заставит Ruby выдавать предупреждение, так как обычно вы не должны переназначать константы таким образом.
new_hash = Temple::HTML::Fast::XHTML_DOCTYPES.dup
new_hash['rdf'] = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">'
Temple::HTML::Fast::XHTML_DOCTYPES = new_hash
Теперь вы можете использовать rdf
как будто это был предопределенный тип документа в Slim.
doctype rdf
html
Это производит:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
<html></html>
Если вы хотите не видеть предупреждение, установите $VERBOSE
в nil
перед изменением константы (убедитесь, что вы изменили ее позже).
begin
old_verbose, $VERBOSE = $VERBOSE, nil
Temple::HTML::Fast::XHTML_DOCTYPES = new_hash
ensure
$VERBOSE = old_verbose
end
(Вы можете превратить это в метод, который принимает блок. Если вы используете Rails, это уже сделано для вас с silence_warnings
.)