2009-06-08 4 views
18

PHPで後で使用するテンプレートにはstaticmaticを使用します。いくつかのタグ属性には一重引用符が含まれ、一部のタグ属性には二重引用符が含まれるという奇妙な状況があります。私は排他的に二重引用符を持っているためにそれらのすべてをしたいと思います(!私が推測する重要ではないことを、私はそのようにそれらをしたい)例えばHaml - タグ属性に二重引用符のみを使用させるにはどうしたらいいですか?

、HAMLコード:

!!! XML 
%html{html_attrs('hr-HR')} 
    %head 
    %title Some title 
    %meta{'http-equiv' => 'Content-Type', :content => 'text/html; charset=utf-8'}/ 
    %meta{'name' => "description", :content => 'Some title - YO!'}/ 
    = stylesheets 
    = javascripts('test', :other) 
    %body 
    = yield 

は、次の生成:

<?xml version='1.0' encoding='utf-8' ?> 
<html lang='hr-HR' xml:lang='hr-HR' xmlns='http://www.w3.org/1999/xhtml'> 
    <head> 
    <title>Some title</title> 
    <meta content='text/html; charset=utf-8' http-equiv='Content-Type' /> 
    <meta content='Some title - YO!' name='description' /> 
    <link href="stylesheets/application.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/grid.css" media="all" rel="stylesheet" type="text/css"/><link href="stylesheets/text.css" media="all" rel="stylesheet" type="text/css"/> 
    <script language="javascript" src="javascripts/test.js" type="text/javascript"></script><script language="javascript" src="javascripts/other.js" type="text/javascript"></script> 

    </head> 
    <body> 
    <h1>some body stuff!</h1> 
    utf test šđčćž ŠĐČĆŽ 
    </body> 
</html> 

hamlコードで一重引用符や二重引用符を使用しても問題はありませんが、常に同じ出力が得られます。

また、haml-> html出力では、タグ属性がアルファベット順に並べ替えられているように見えます。私はこれがルビー配列と関係があると考えていますが、私は静的にhamlから離れてRubyを使用することはできません。私はそれらをhamlコードのルビ配列で注文したのと同じように注文することができますか?

答えて

28

は、以下のことを試してみてください。

Haml::Template.options[:attr_wrapper] = '"' 
+1

私はstaticmaticのそれを置くどこ? staticmaticによって作られたsrc/underプロジェクトのconfiguration.rbはそうではありません。私はまだルビについて少しの手掛かりがないので、私はその設定をどこに置くべきかわかりません。 – Keyframe

+0

私はこのオプションを組み込むためにstaticmaticにrender.rbをパッチしました。それはすべて "今です。ありがとう! – Keyframe

+3

Rails3のために、この行を' config/initializers/haml.rb'に入れました。 –

2

HAMLは確かに順序がアルファベット順に属性ん、これは実際にRubyのパーサの結果です。将来、属性はできるだけ文書順に並べられますが、Haml 2.2以降では起こりそうにありません。

+0

それはまったく可能ですか?私はそれが重要ではないこと、属性の順序付けを知っていますが、コードを見るとちょうどいい気分にはなりません。私はヘルパーを準備し、それを含めることができましたが、どうして私はなぜハムルを使うのですか? – Keyframe

+3

この問題は、Hamlがどのようにテンプレートをコンパイルするかに起因しています。テンプレートを最初にHTMLの文字列を生成するRubyコードに変換します。コンパイルする前に属性ハッシュを解析しようとします(最近ではこれがより良くなっています - 動的値を含まない任意の属性ハッシュを解析できるはずです)ができない場合、ハッシュをリテラルのRubyコンパイルされたコードのハッシュRubyハッシュは順序を保持しないので(少なくともRuby 1.8では)、結果の属性は未定義の順序であることを意味します。出力を確定的にするために、Hamlはそれらをアルファベット順に並べます。 –

+1

Hamlは静的属性をRubyにダンプしないでパースするので、テンプレート順に出力することができます。この問題は、いくつかの静的属性および動的属性を使用して何をすべきかを知ることになります。これは解決可能な問題であり、おそらく最終的には対処される予定ですが、次のHamlバージョン(2.2)はリリースに近づいているため、バージョン2.4までプッシュオフされる可能性があります。 –

0

引用から:http://haml.info/docs/yardoc/file.REFERENCE.html#options

HAMLは、その 性能と出力に影響を与えるさまざまな設定オプションを理解しています。 Railsでは

、オプションは初期化子でHaml::Template.options ハッシュ設定することで設定することができます:Railsの外

# config/initializers/haml.rb

Haml::Template.options[:format] = :html5 

を、あなたはHaml::Options.defaultsでグローバルにそれらを設定することにより、それらを設定することができます。

Haml::Options.defaults[:format] = :html5 

最後に、オプションのハッシュを[Haml :: Engine#initialize] [1]。利用可能なオプションの一覧は、 については[Haml :: Options] [2]を参照してください。

[1]: http://haml.info/docs/yardoc/Haml/Engine.html#initialize-instance_method

[2]:http://haml.info/docs/yardoc/Haml/Options.html

+0

質問はほぼ6歳です:) – Keyframe

+0

しかし、私はこのものに新しいので、実際の私のためです。そして、他の人のためにすることができます。 –

関連する問題