次のように、コマンドラインから Haml を使用して、1 つの .haml ファイルを .html に基本的に変換しています。
> haml input.haml output.html
つまり、これにより、結果の HTML で属性が一重引用符で囲まれます。:attr_wrapper => '"'
では、コマンドラインからオプションを渡すにはどうすればよいでしょうか?
または、グローバルに:attr_wrapper
二重引用符に設定できますか?
次のように、コマンドラインから Haml を使用して、1 つの .haml ファイルを .html に基本的に変換しています。
> haml input.haml output.html
つまり、これにより、結果の HTML で属性が一重引用符で囲まれます。:attr_wrapper => '"'
では、コマンドラインからオプションを渡すにはどうすればよいでしょうか?
または、グローバルに:attr_wrapper
二重引用符に設定できますか?
引数として渡す方法はわかりませんが、HAML はプログラムで簡単に使用できます。
require 'haml'
template = ARGV.length > 0 ? File.read(ARGV.shift) : STDIN.read
haml_engine = Haml::Engine.new(template, :attr_wrapper => '"')
file = ARGV.length > 0 ? File.open(ARGV.shift, 'w') : STDOUT
file.write(haml_engine.render)
file.close
きれいなものは何もありませんが、指定された最初の引数 (引数が指定されていない場合は STDIN) を開き、レンダリングされた出力を 2 番目の引数 (または指定されていない場合は STDOUT) に渡します。
私がやったことは、〜302行目のhaml/exec.rbに以下を追加することです
opts.on('-q', '--double-quote-attribs',
'Set attribute wrapper to double-quotes (default is single).') do
@options[:for_engine][:attr_wrapper] = '"'
end
これにより、必要なことを行うための専用オプションが追加されます。
デフォルトで一重引用符を使用する理由が何であるかはよくわかりません。二重引用符を使用すると、より賢明なデフォルトになると思いました。そうは言っても、それらは完全に有効です。
このアップデートをパッチとして送信しました。バージョン 2.4 に含まれます。
そのオプションを標準のコマンドラインクライアントに指定する方法がわかりません。haml / engine.rbの73行目(Haml 2.2.2)を次のように変更することで、デフォルトにグローバルにパッチを適用できます。
:attr_wrapper => '"',
これはHaml2.2.2の場合です。以前のバージョンでは異なります。これらのいずれかをまだ使用している場合は、「:attr_wrapper =>」をテキスト検索するだけで、正しい行が見つかります。