Передача параметров в Haml в командной строке - PullRequest
2 голосов
/ 30 июля 2009

Я использую Haml из командной строки, чтобы выполнить базовое преобразование одного файла .haml в .html, например:

> haml input.haml output.html

Дело в том, что это создает одинарные кавычки вокруг атрибутов в результирующем HTML. Так как мне передать параметр :attr_wrapper => '"' из командной строки?

В качестве альтернативы, можно ли глобально установить :attr_wrapper в двойную кавычку?

Ответы [ 3 ]

4 голосов
/ 30 июля 2009

Я не знаю, как передать его в качестве аргумента, но 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 не указан).

4 голосов
/ 30 июля 2009

В итоге я добавил следующее в haml / exec.rb в строке 302

    opts.on('-q', '--double-quote-attribs',
            'Set attribute wrapper to double-quotes (default is single).') do
      @options[:for_engine][:attr_wrapper] = '"'
    end

Это добавляет выделенную опцию, чтобы делать то, что мне нужно.

Я не совсем уверен, каково обоснование использования одинарных кавычек по умолчанию; я бы подумал, что двойные кавычки сделали бы более разумное значение по умолчанию. Сказав это, они совершенно действительны.

Я представил это обновление как патч , и оно будет включено в версию 2.4

1 голос
/ 30 июля 2009

Я не знаю, как указать эту опцию для стандартного клиента командной строки. Вы можете глобально исправить патч по умолчанию, изменив строку 73 в haml / engine.rb (в Haml 2.2.2) следующим образом:

:attr_wrapper => '"',

Это для Haml 2.2.2. Это отличается в более ранних версиях. Если вы все еще используете один из них, вы можете просто выполнить текстовый поиск ": attr_wrapper =>", и он найдет правильную строку.

...