| ハムル | |
|---|---|
| パラダイム | テンプレートエンジン |
| デザイン: | ハンプトン・キャトリン |
| 開発者 | ナタリー・ワイゼンバウム(過去)、ノーマン・クラーク、マット・ワイルディグ、松田朗、ティー・パーハム[ 1 ] |
| 安定版リリース | |
| 実装言語 | ルビー |
| OS | クロスプラットフォーム |
| ライセンス | MITライセンスとUnspace Interactive [ 1 ] |
| ファイル名拡張子 | .haml |
| Webサイト | ハムル |
Haml(HTML抽象化マークアップ言語)は、Webドキュメント内にインラインコードを記述する必要をなくし、HTMLをより簡潔にするために設計されたテンプレートシステムです。eRubyなどの他のテンプレートシステムと同様に、 Hamlも実行時に実行されるコードを埋め込み、動的なコンテンツを提供するためのHTMLコードを生成します。Hamlコードを実行するには、ファイルに.haml拡張子を付ける必要があります。これらのファイルは、 Webアプリケーションの開発中にRubyコードを埋め込むのに役立つ.erbファイルや.eRubyファイルに似ています。
Hamlはコードコメントを解析する際に、Ruby 1.9以降と同じルールを使用します。HamlはUTF-8などのASCII互換エンコーディングのみを理解しますが、UTF-16やUTF-32はASCIIと互換性がないため理解しません。[ 3 ] [ 4 ]
Haml は、コマンドライン、個別の Ruby モジュール、またはRuby on Railsアプリケーションで使用できます。
Hamlは2006年の最初のリリースでHampton Catlinによって最初に導入され、彼の仕事は他の数人によって引き継がれました。[ 5 ]彼の目的は、HTMLをよりシンプルで、よりクリーンで、より使いやすくすることでした。2006年以降、Hamlは何度か改訂され、新しいバージョンがリリースされています。2012年まではNatalie WeizenbaumがHamlの主なメンテナーを務め、その後Norman Clarkeが2015年までメンテナーを務めました。 [ 5 ] NatalieはHamlをRubyアプリケーションで使用できるようにするために尽力し、ブランディングとデザインはNick Walshが担当しました。[ 5 ]
バージョン 2.2.0 は、Ruby 1.9 とRails 2.0 以上をサポートして 2009 年 7 月にリリースされました。 [ 6 ]バージョン 3.0.0 は、Rails 3 のサポートといくつかのパフォーマンスの改善を追加して 2010 年 5 月にリリースされました。4 番目のメジャーバージョンでは、以前のバージョンとの互換性がなくなり、Rails 3 と Ruby 1.8.7 以上のみをサポートするようになり、セマンティック バージョニングに切り替えられました。Haml 4 シリーズでは、パフォーマンスの向上、いくつかの警告の修正、最新バージョンの Rails との互換性、ドキュメントの修正など、いくつかの修正が行われました。[ 6 ]バージョン 5.0.0 は、2017 年 4 月にリリースされました。Ruby 2.0.0 以上をサポートし、Rails 3 との互換性がなくなりました。[ 6 ] Haml テンプレートのトレースを実行するのに役立つ ' trace ' [ 7 ]オプションが追加されました。
HamlマークアップはCSSと構文が似ています。例えば、Hamlでは.CSSと同じドット表記でクラスを表現します。
HAML はCSS セレクターを認識するため、以下は同等です。
%p { :class => "sample" , :id => "welcome" }こんにちは、世界! %p .sample #ようこそHello, World! これらは次のHTMLコードにレンダリングされます。
< p class = "sample" id = "welcome" >こんにちは、世界!</ p >HamlはRuby on Railsにプラグインとして統合できます。eRubyと同様に、Hamlもローカル変数(Rubyコード内の同一ファイル内で宣言されたもの)にアクセスできます。この例では、サンプルのRubyコントローラファイルを使用しています。[ 8 ]
app/controllers/messages_controller.rbクラスMessagesController < ApplicationController def index @message = "Hello, World!" end endapp/views/messages/index.html.haml#ようこそ%p = @メッセージこれは次のようにレンダリングされます:
< div id = "welcome" > < p >こんにちは、世界!</ p > </ div >Haml は Rubyライブラリとして独立して使用することもできます。
welcome = Haml :: Engine . new ( "%p Hello, World!" ) welcome . render出力:
< p >こんにちは、世界!</ p >Haml::Engineは Haml クラスです。
Hamlは、タグのネストとスコープに空白インデント(2つのスペース)を使用し、オープンエンドタグのペアを置き換えます。次の例では、HamlとeRuby(埋め込みRuby)の構文をHTML出力とともに比較しています。
| ハムル | エルビー | HTML |
|---|---|---|
%div .category %div .recipes %h1 =レシピ.名前%h3 =レシピ.カテゴリー%div %h4 =レシピ.説明 | < div class = "category" > < div class = "recipes" > < h1 > <%= recipe . name %> </ h1 > < h3 > <%= recipe . category %> </ h3 > </ div > < div > < h4 > <%= recipe . description %> </ h4 > </ div > </ div > | < div class = "category" > < div class = "recipes" > < h1 >クッキー</ h1 > < h3 >デザート</ h3 > </ div > < div > < h4 >生地と砂糖で作られます。通常は円形で、約400カロリーです。</ h4 > </ div > </ div > |
主な違いは次のとおりです。
class、 、などのプロパティは、通常の、キーワードの代わりに、それぞれidで表すことができます。また、Hamlでは、eRubyのようにの代わりに、HTML要素を表すために を使用します。.#classid%<>!!! %html { :xmlns => "http://www.w3.org/1999/xhtml" , :lang => "en" , "xml:lang" => "en" } %head %title BoBlog %meta { "http-equiv" => "Content-Type" , :content => "text/html; charset=utf-8" } %link { "rel" => "stylesheet" , "href" => "main.css" , "type" => "text/css" } %body #header %h1 BoBlog %h2 Bob's Blog #content - @entries . each do | entry | .entry %h3 .title = entry . title %p .date = entry . posted . strftime ( "%A, %B %d, %Y" ) %p .body = entry . body #footer %pすべてのコンテンツの著作権は© Bobにあります 上記のHamlは次のXHTMLを生成します:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> < html lang = 'en' xml:lang = 'en' xmlns = 'http://www.w3.org/1999/xhtml' > < head > < title > BoBlog </ title > < meta content = 'text/html; charset=utf-8' http-equiv = 'Content-Type' /> < link href = "/stylesheets/main.css" media = "screen" rel = "Stylesheet" type = "text/css" /> </ head > < body > < div id = 'header' > < h1 > BoBlog </ h1 > < h2 > Bob's Blog </ h2 > </ div > < div id = 'content' > < div class = 'entry' > < h3 class = 'title' >ハロウィン</ h3 > < p class = 'date' > 2006年10月31日(火)</ p > < p class = 'body' > 読者の皆様、ハッピーハロウィン!今晩はパーティーに行く予定です…とても楽しみです。 </ p > </ div > < div class = 'entry' > < h3 class = 'title' >新しい Rails テンプレートエンジン</ h3 > < p class = 'date' > 2006年8月11日(金)</ p > < p class = 'body' > Ruby on Rails用の新しいテンプレートエンジンが登場しました。Hamlです。 </ p > </ div > </ div > < div id = 'フッター' > < p > すべてのコンテンツの著作権はボブに帰属します。 </ p > </ div > </ body > </ html >Hamlの公式実装はRuby向けに構築されており、 Ruby on RailsとMerb用のプラグインも提供されていますが、Ruby実装は単独でも動作します。Hamlは他の言語と簡単に連携できます。以下はHamlが実装されている言語の一覧です。