我正在使用命令行中的Haml对一个.haml文件进行基本转换为.html,如下所示:
> haml input.haml output.html
事实上,这会在生成的HTML中围绕属性生成单引号。那么如何从命令行传递:attr_wrapper => '"'
选项?
或者,我可以将:attr_wrapper
全局设置为双引号吗?
答案 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 =>”它会找到正确的线。