| パラダイム | テンプレートエンジン |
|---|---|
| デザイン: | ハンプトン・キャトリン |
| 開発者 | ナタリー・ワイゼンバウム(過去)、ノーマン・クラーク、マット・ワイルディグ、松田朗、ティー・パーハム[1] |
| 安定版リリース | 6.3.0 [2]
/ 2023年12月10日 |
| 実装言語 | ルビー |
| OS | クロスプラットフォーム |
| ライセンス | MITライセンスとUnspace Interactive [1] |
| ファイル名拡張子 | .haml |
| Webサイト | ハムルインフォ |
Haml ( HTML Abstraction Markup Language ) は、 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 は 2010 年 5 月にリリースされ、Rails 3 のサポートといくつかのパフォーマンスの改善が追加されました。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 #welcome Hello, World!
これらは次のHTMLコードにレンダリングされます。
< p class = "sample" id = "welcome" >こんにちは、世界!</ p >
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 出力とともに比較します。
主な違いは次のとおりです。
- Haml には、 eRubyのように各要素に開始タグと終了タグの両方がありません。
- eRuby の構文はHTMLによく似ており、より HTML に似ていますが、Haml はよりCSSに似ています。
- Haml はインデントを使用してタグ要素をネストしますが、eRuby は同じ HTML 表現を使用します。
classHaml では、 、などのプロパティは、通常の、キーワードの代わりに、それぞれ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 .本文#フッター%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 >
すべてのコンテンツの著作権はBobに帰属します。
</ p >
</ div >
</ body >
</ html >
実装
Haml の公式実装はRuby on RailsとMerbのプラグインを使用してRuby用に構築されていますが、Ruby 実装は独立して機能することもできます。Haml は他の言語と一緒に簡単に使用できます。以下は、Haml が実装されている言語の一覧です。
- ルビー:ハムリット
- PHP: Fammel、pHAML、phamlp、phpHaml (PHP 5)、HAML-TO-PHP (PHP 5)、マルチターゲット HAML (PHP 5.3)
- Javascript: haml-js
- Python: HamlPy
- コモン Lisp: cl-haml
- ダーツ:ハート
- Java: JHaml
- Lua: LuaHaml
- .NET: NHaml
- ASP.NET: モノレール NHaml
- Perl: テキスト::Haml
- Scala: スケーラ
参照
- BBコード
- eRuby
- マルカビー
- ルビー
- ルビーオンレール
- ヤム
- Sass – 同じく Catlin によって設計されたCSSの類似システム。
- ウェブサイトメタ言語 – 同様の機能を持つ別のテンプレート言語
- Web テンプレート– テンプレートからHTMLへの拡張の一般的な概念
参考文献
- ^ ab "GitHub". GitHub . 2018年4月28日閲覧。
- ^ “リリース 6.3.0”. 2023年12月10日. 2023年12月19日閲覧。
- ^ 「Encoding」 。 2016年1月29日閲覧。
- ^ 「UTF エンコーディング」。GitHub。2016年2 月 7 日閲覧。
- ^ abc 「About」 。 2018年4月28日閲覧。
- ^ abc "Changelog". GitHub . 2018年4月28日閲覧。
- ^ 「Haml のトレースオプション」 。2016年2 月 16 日閲覧。
- ^ 「Hamlの使用」。2016年2月7日閲覧。
外部リンク
- 公式サイト
- Hamlチュートリアル
- Hamlを学ぶ(基礎)
- GitHub上の Haml
- phpHaml、PHP用の Haml 実装
- ハムル Google グループ
- Haml 1.0、公式Ruby on Railsウェブログでの発表
