我正在使用命令行中的Haml对一个.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),并将渲染输出传递给第二个参数(或未给定的STDOUT)。

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

:attr_wrapper => '"',

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top