我有一个包含此doctype的页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
现在将它转换为slim模板格式,bu slim在预设中没有doctype
,我怀疑应该有指定自定义格式的方法。现在我使用|
:
|<!DOCTYPE html PUBLIC "...skip...>
html
....
但它在doctype
行之后没有换行符号呈现:
<!DOCTYPE html PUBLIC "...skip...><html ...
哪种方式不受欢迎,将它们放在不同的行上?
答案 0 :(得分:2)
要在模板中的任意位置插入换行符,只需添加以下行:
= "\n"
Slim中的“=”命令执行给定的Ruby代码并将其附加到缓冲区。在这种情况下,Ruby代码只是一个换行符。
答案 1 :(得分:1)
您不需要|
字符,Slim允许inline HTML直接包含HTML,其中包括doctypes。这对格式化没有帮助,但之后仍然没有换行符。
Slim使用的doctypes are actually managed in Temple。您可以更改此选项以添加自定义文档类型以获取所需的行为。这确实涉及到弄乱Temple的内部数据所以你需要小心一点,特别是在升级时,因为内部可能已经改变了。
有问题的哈希是frozen,所以你不能只为它添加一个新条目。但是,您可以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
已经为您完成了。)