2

次のように、コマンドラインから Haml を使用して、1 つの .haml ファイルを .html に基本的に変換しています。

> haml input.haml output.html

つまり、これにより、結果の HTML で属性が一重引用符で囲まれます。:attr_wrapper => '"'では、コマンドラインからオプションを渡すにはどうすればよいでしょうか?

または、グローバルに:attr_wrapper二重引用符に設定できますか?

4

3 に答える 3

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) に渡します。

于 2009-07-30T19:10:30.360 に答える
4

私がやったことは、〜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 に含まれます。

于 2009-07-30T19:26:27.737 に答える
1

そのオプションを標準のコマンドラインクライアントに指定する方法がわかりません。haml / engine.rbの73行目(Haml 2.2.2)を次のように変更することで、デフォルトにグローバルにパッチを適用できます。

:attr_wrapper => '"',

これはHaml2.2.2の場合です。以前のバージョンでは異なります。これらのいずれかをまだ使用している場合は、「:attr_wrapper =>」をテキスト検索するだけで、正しい行が見つかります。

于 2009-07-30T18:58:34.127 に答える