你不需要这个|
字符,Slim 允许内联 HTML直接包含 HTML,并且包括 doctypes。虽然这对格式化没有帮助,但它之后仍然没有换行符。
文档类型实际上是在Slim 使用的Temple 中管理的。您可以更改它以添加自定义文档类型以获得您想要的行为。这确实涉及弄乱 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
。)