ハムル

ハムル
パラダイムテンプレートエンジン
デザイン:ハンプトン・キャトリン
開発者ナタリー・ワイゼンバウム(過去)、ノーマン・クラークマット・ワイルディグ松田朗ティー・パーハム[ 1 ]
安定版リリース
7.1.0 [ 2 ] ウィキデータで編集する / 2025年12月11日 (2025年12月11日
実装言語ルビー
OSクロスプラットフォーム
ライセンスMITライセンスUnspace Interactive [ 1 ]
ファイル名拡張子.haml
Webサイトハムル.info

HamlHTML抽象化マークアップ言語)は、Webドキュメント内にインラインコードを記述する必要をなくし、HTMLをより簡潔にするために設計されたテンプレートシステムです。eRubyなどの他のテンプレートシステムと同様に Hamlも実行時に実行されるコードを埋め込み、動的なコンテンツを提供するためのHTMLコードを生成します。Hamlコードを実行するには、ファイルに.haml拡張子を付ける必要があります。これらのファイルは、 Webアプリケーションの開発中にRubyコードを埋め込むのに役立つ.erbファイルや.eRubyファイルに似ています。

Hamlはコードコメントを解析する際に、Ruby 1.9以降と同じルールを使用します。HamlはUTF-8などのASCII互換エンコーディングのみを理解しますが、UTF-16UTF-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 >

Ruby on RailsのアドオンとしてのHaml

HamlはRuby on Railsにプラグインとして統合できます。eRuby同様に、Hamlもローカル変数(Rubyコード内の同一ファイル内で宣言されたもの)にアクセスできます。この例では、サンプルのRubyコントローラファイルを使用しています。[ 8 ]

  • ファイル:app/controllers/messages_controller.rb
    クラスMessagesController < ApplicationController def index @message = "Hello, World!" end end
  • ファイル:app/views/messages/index.html.haml
    #ようこそ%p = @メッセージ

これは次のようにレンダリングされます:

< div id = "welcome" > < p >こんにちは、世界!</ p > </ div >

RubyモジュールとしてのHaml

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 >

主な違いは次のとおりです。

  • Haml には、 eRubyのように各要素に開始タグと終了タグの両方がありません。
  • eRuby の構文はHTMLによく似ており、より HTML に似ていますが、Haml はよりCSSに似ています。
  • Haml はインデントを使用してタグ要素をネストしますが、eRuby は同じ HTML 表現を使用します。
  • Hamlではclass、 、などのプロパティは、通常の、キーワードの代わりに、それぞれidで表すことができます。また、Hamlでは、eRubyのようにの代わりに、HTML要素を表すために を使用します。.#classid%<>

埋め込まれたRubyコードの例

!!! %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 RailsMerb用のプラグインも提供されていますが、Ruby実装は単独でも動作します。Hamlは他の言語と簡単に連携できます。以下はHamlが実装されている言語の一覧です。

参照

参考文献

  1. ^ a b "GitHub" . GitHub . 2018年4月28日閲覧
  2. ^ 「リリース 7.1.0」 . 2025年12月11日. 2025年12月12日閲覧
  3. ^ 「Encoding」 . 2016年1月29日閲覧
  4. ^ 「UTFエンコーディング」 . GitHub . 2016年2月7日閲覧
  5. ^ a b c「About」 。 2018年4月28日閲覧
  6. ^ a b c「Changelog」 . GitHub . 2018年4月28日閲覧
  7. ^ “Trace Option in Haml” . 2016年2月23日時点のオリジナルよりアーカイブ2016年2月16日閲覧。
  8. ^ 「Hamlの使用」2016年2月7日閲覧。