代码之家  ›  专栏  ›  技术社区  ›  Charles Roper

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

  •  2
  • Charles Roper  · 技术社区  · 15 年前

    > haml input.haml output.html
    

    问题是,这会在结果HTML中的属性周围生成单引号。那么我如何通过考试呢 :attr_wrapper => '"' 命令行中的选项?

    或者,我可以只设置全局值吗 :attr_wrapper 双重报价?

    3 回复  |  直到 15 年前
        1
  •  4
  •   Pesto    15 年前

    我不知道如何将其作为参数传递,但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
    

        2
  •  4
  •   Charles Roper    15 年前

    我最后做的是将以下内容添加到第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版中

        3
  •  1
  •   Chuck    15 年前

    我不知道如何将该选项指定给标准命令行客户端。通过将haml/engine.rb第73行(在haml 2.2.2中)更改为

    :attr_wrapper => '"',
    

    这是为Haml 2.2.2准备的。在早期版本中是不同的。如果您仍在使用其中一个,则只需对“:attr_wrapper=>”进行文本搜索,它就会找到正确的行。