Hamlリファレンス
なんとなく気が向いたので途中まで訳してみた。
だいたい20%くらいまで。続きはまた今度やる。
原文はこちらをご覧ください。
Haml(XHTML Abstraction Markup language)
Haml はあらゆるwebドキュメントをインラインコードを用いずにXHTMLでクリアでシンプルに記述するマークアップ言語です。Hamlの機能はPHP、ERB、ASPなどのテンプレートシステムの代替となります。HamlではXHTMLコードをテンプレートに記述する必要はありません。なぜならばそれはXHTMLコードの動的なコンテンツを生成する抽象記述だからです。
Hamlをつかう
Hamlは3つの方法で使用することができます。Railsプラグイン、標準Rubyモジュール、コマンドラインツール。3つの方法で共通する最初のステップはHaml gemをインストールすることです。
gem install haml
Railsプラグインとして使用するには下記のコマンドを実行します。
haml --rails path/to/rails/app
インストールされたら、すべてのviewファイルはHamlを使用して".html.haml"にコンパイルされます。
Hamlをコマンドラインから実行するには、以下のコマンドを実行するだけです。
haml input.haml output.html
Hamlテンプレートの中ではERBのようにいくつかの方法でインスタンス変数にアクセスすることができます。ヘルパーモジュールはHamlの中でも使用可能です。例えば(これはRailsの例ですがMarbでも同じ原理です)
# file: app/controllers/movies_controller.rb class MoviesController < ApplicationController def index @title = "Teen Wolf" end end
# file: app/views/movies/index.haml #content .title %h1= @title = link_to 'Home', home_url
これは以下のようにコンパイルされます。
<div id='content'> <div class='title'> <h1>Teen Wolf</h1> <a href='/'>Home</a> </div> </div>
Rubyモジュール
HamlはRailsとActionViewから切り離して使用することもできます。そのためにはRubyGemsを使用してHamlをインストールします。
gem install haml
hamlをRubyコードの中で使用するには下記のようにHaml::Engineを使用します。
require 'rubygems' require 'haml' engine = Haml::Engine.new("%p Haml code!") engine.render #=> "<p>Haml code!</p>\n"
Hamlの文字の意味
特定の場所に置かれたいくつもの文字がHamlに異なるタイプのレンダリングを指示します。
%
パーセント文字は行の先頭に記述されます。それに続く文字列は要素名となり、修正の機会、(下記をみてください)空白、テキストは要素の内部に出力されます。
%one %two %three Hey there
これは以下のようにコンパイルされます。
<one> <two> <three>Hey there</three> </two> </one>
すべての文字列はが有効な要素名として解釈されます。Hamlは自動的にその要素名の開きタグと閉じタグを生成します。
{}
中カッコはRubyのハッシュで、要素の属性を指定します。それはRubyのハッシュと同じように評価され、その中でロジックを記述することもできます。またローカル変数も使用できます。属性の中でクオートされた文字列は適切なエスケープシーケンスで置換されます。ハッシュはタグの定義の後に置かれます。
例:
%head{ :name => "doc_head" } %script{ 'type' => "text/" + "javascript", :src => "javascripts/script_#{2 + 7}" }
これは以下のようにコンパイルされます。
<head name='doc_head'> <script src='/docs/rdoc/javascripts/script_9' type='text/javascript'> </script> </head>
属性を返すメソッド
ハッシュを返すRubyのメソッド呼び出しはハッシュの代用とすることができます。例えばHaml::Helpersは下記のように定義されています。
def html_attrs(lang = 'en-US') {:xmlns => "http://www.w3.org/1999/xhtml", 'xml:lang' => lang, :lang => lang} end
これによってHamlで以下のように書くことができます。
%html{html_attrs('fr-fr')}
これは以下のようにコンパイルされます。
<html lang='fr-fr' xml:lang='fr-fr' xmlns='http://www.w3.org/1999/xhtml'> </html>
他にもあなたが好きなメソッドを属性を返すメソッドとして使用することができます。
Ruby引数のようにコンマで分離して記述します。メソッドの返り値のハッシュは左から右の方向に一緒に連結されてひとつのハッシュになります。例えばあなたが下記のようにhash1とhash2定義し
def hash1 {:bread => 'white', :filling => 'peanut butter and jelly'} end def hash2 {:bread => 'whole wheat'} end
これをhamlで下記のように記述した場合には
%sandwich{hash1, hash2, :delicious => true}/
以下のようにコンパイルされます。
<sandwich bread='whole wheat' delicious='true' filling='peanut butter and jelly' />
Hamlの属性リストはRubyのメソッド呼び出しと同じ文法規則をもつことに注意してください。これはすべての属性を返すメソッドメソッドはハッシュリテラルの前に無くてはならないことを意味します。
*1:どう訳せばいいかわからんっ