2

私はこのdoctypeを持つページを持っています:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">

そして今それをスリムテンプレート形式に変換すると、スリムにはdoctypeプリセットにそのようなものがなく、カスタムテンプレートを指定する方法があるはずです。今私は使用します|

|<!DOCTYPE html PUBLIC "...skip...>
html
 ....

しかし、それは行の後に改行記号なしでレンダリングされましたdoctype:

<!DOCTYPE html PUBLIC "...skip...><html ...

それらを別々の行に配置する方法はありますか?

4

2 に答える 2

2

テンプレートの任意の場所に改行を挿入するには、次の行を追加します。

= "\n"

Slim の "=" コマンドは、与えられた Ruby コードを実行し、それをバッファに追加します。この場合、Ruby コードは単なる改行文字です。

于 2012-11-29T21:01:50.367 に答える
1

|この文字は必要ありません。Slim では、HTML を直接インクルードするためのインライン HTMLが許可されており、これには doctype が含まれています。ただし、これは書式設定には役立ちませんが、その後に改行はありません。

Doctype は実際には Slim が使用する Temple で管理されます。これを変更して、カスタム doctype を追加して、必要な動作を得ることができます。これには 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 であるかのように使用できます。

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>

警告が表示されないようにしたい場合は、定数を変更する前に に設定$VERBOSEnilてください (必ず後で元に戻してください)。

begin
  old_verbose, $VERBOSE = $VERBOSE, nil
  Temple::HTML::Fast::XHTML_DOCTYPES = new_hash
ensure
  $VERBOSE = old_verbose
end

(これをブロックを受け入れるメソッドに変えることができます。Rails を使用している場合は、既に . で行われていますsilence_warnings。)

于 2012-11-29T21:16:31.070 に答える