2

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

于 2009-07-30T19:10:30.360 回答
4

我最终做的是在 ~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 版中

于 2009-07-30T19:26:27.737 回答
1

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

:attr_wrapper => '"',

这适用于 Haml 2.2.2。在早期版本中有所不同。如果您仍在使用其中之一,您可以通过文本搜索“:attr_wrapper =>”,它会找到正确的行。

于 2009-07-30T18:58:34.127 回答