2009-07-30 13 views
2

I Haml von der Befehlszeile bin mit Passing eine grundlegende Transformation von einer .haml Datei, dies zu tun .html, wie:Optionen Haml auf der Kommandozeile

> haml input.haml output.html 

Das Ding ist, das erzeugt Einfache Anführungszeichen um Attribute im resultierenden HTML. Wie kann ich also die :attr_wrapper => '"' Option von der Kommandozeile aus übergeben?

Alternativ kann ich einfach global :attr_wrapper zu einem doppelten Angebot setzen?

Antwort

4

Was ich tun am Ende fügt folgendes haml/exec.rb bei ~ Linie 302

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

Dies fügt eine spezielle Option zu tun, was ich brauche.

Ich bin nicht ganz sicher, was die Grundannahme für die Verwendung von einfachen Anführungszeichen ist standardmäßig; Doppelzitate würden einen vernünftigeren Standard machen, hätte ich gedacht. Nachdem dies gesagt wurde, sind sie absolut gültig.

Ich reichte dieses Update als patch und es wird in der Version 2.4

+0

Hampton Catlin mag nur einfache Anführungszeichen eingeschlossen werden, weil sie weniger aufdringlich oder so ähnlich sind. So ziemlich jeder andere stimmt mit dir überein. – Chuck

1

Ich kenne keine Möglichkeit, diese Option für den Standard-Befehlszeilenclient anzugeben. Sie können global die Standard-Patch von haml/engine.rb Linie 73 (in Haml 2.2.2)

:attr_wrapper => '"', 

lesen zu ändern, die für Haml 2.2.2 ist. In früheren Versionen ist das anders. Wenn Sie noch eine davon verwenden, können Sie einfach nach einer Textsuche nach ": attr_wrapper =>" suchen und es wird die richtige Zeile gefunden.

4

Ich weiß nicht, von einer Art und Weise als Argument zu übergeben, aber HAML ist einfach programmatisch zu verwenden:

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 

Nichts hübsch, aber es wird das erste Argument gegeben öffnen (oder STDIN, wenn es werden keine Argumente angegeben) und übergibt die gerenderte Ausgabe an das zweite Argument (oder STDOUT von nicht angegeben).