我在命令行中使用 Haml 将一个 .haml 文件基本转换为 .html,如下所示:
> haml input.haml output.html
问题是,这会在生成的 HTML 中生成围绕属性的单引号。那么如何:attr_wrapper => '"'
从命令行传递选项呢?
或者,我可以全局设置:attr_wrapper
为双引号吗?
我在命令行中使用 Haml 将一个 .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),并将渲染的输出传递给第二个参数(或未给出的 STDOUT)。
我最终做的是在 ~line 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 => '"',
这适用于 Haml 2.2.2。在早期版本中有所不同。如果您仍在使用其中之一,您可以通过文本搜索“:attr_wrapper =>”,它会找到正确的行。