コマンドラインでHamlにオプションを渡す
-
05-07-2019 - |
質問
次のように、コマンドラインからHamlを使用して、1つの.hamlファイルから.htmlへの基本的な変換を実行しています:
> haml input.haml output.html
つまり、結果のHTMLの属性を単一引用符で囲みます。 :attr_wrapper =>を渡す方法コマンドラインからの「"」
オプション?
別の方法として、:attr_wrapper
を二重引用符にグローバルに設定することはできますか?
解決 2
私がやったことは、〜行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はプログラムで簡単に使用できます:
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)に渡します。
標準のコマンドラインクライアントにそのオプションを指定する方法がわかりません。 haml / engine.rbの73行目(Haml 2.2.2)を変更して読むことで、デフォルトにグローバルにパッチを適用できます
:attr_wrapper => '"',
これはHaml 2.2.2向けです。以前のバージョンでは異なります。まだこれらのいずれかを使用している場合は、":attr_wrapper =>"のテキスト検索を実行できます。正しい行が見つかります。