在命令行上将选项传递给Haml

时间:2009-07-30 18:37:33

标签: ruby command-line haml

我正在使用命令行中的Haml对一个.haml文件进行基本转换为.html,如下所示:

> haml input.haml output.html

事实上,这会在生成的HTML中围绕属性生成单引号。那么如何从命令行传递:attr_wrapper => '"'选项?

或者,我可以将:attr_wrapper全局设置为双引号吗?

3 个答案:

答案 0 :(得分: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),并将渲染输出传递给第二个参数(或未给定的STDOUT)。

答案 1 :(得分: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

这增加了一个专门的选项来完成我需要的工作。

我不太清楚默认使用单引号的理由是什么;我会想到,双引号会产生更合理的违约。话虽如此,它们完全有效。

我将此更新提交为patch,并且它将包含在2.4版

答案 2 :(得分:1)

我不知道为标准命令行客户端指定该选项的方法。您可以通过更改haml / engine.rb第73行(在Haml 2.2.2中)来全局修补默认值

:attr_wrapper => '"',

那是Haml 2.2.2。它在早期版本中有所不同。如果你还在使用其中一个,你可以只搜索“:attr_wrapper =>”它会找到正确的线。