Haml
Haml は HTML 用のテンプレートエンジンです。冗長性を排除し、ドキュメントが表現する基礎構造を反映し、強力で理解しやすいエレガントな構文を提供することで、HTML ドキュメントの作成をより簡単で快適にするように設計されています。
基本的な使用方法
Haml はコマンドラインから、または Ruby Web フレームワークの一部として使用できます。最初のステップは gem をインストールすることです。
gem install haml
Haml を記述したら、以下を実行できます。
haml render document.haml
これにより、HTML にコンパイルされます。これらのコマンドの詳細については、以下を参照してください。
haml --help
Haml をプログラム的に使用するには、YARD ドキュメント を参照してください。
Rails で Haml を使用する
Rails で Haml を使用するには、Gemfile に Haml を追加して bundle
を実行するだけです。
gem 'haml'
Rails の ERB ベースのジェネレーターを Haml で置き換えたい場合は、haml-rails も Gemfile に追加してください。
フォーマット
Haml の最も基本的な要素は、HTML を作成するための省略記法です。
%tagname{:attr1 => 'value1', :attr2 => 'value2'} Contents
終了タグは不要です。Haml が自動的に処理します。HTML スタイルのアトリビュートを好む場合は、以下を使用することもできます。
%tagname(attr1='value1' attr2='value2') Contents
class
と id
アトリビュートの追加はさらに簡単です。Haml は、ドキュメントをスタイル設定する CSS と同じ構文を使用します。
%tagname#id.class
実際、<div>
タグを使用する場合は、さらに簡単になります。<div>
は非常に一般的な要素であるため、名前のないタグは div にデフォルト設定されます。そのため
#foo Hello!
は
<div id='foo'>Hello!</div>
になります。
%ul
%li Salt
%li Pepper
は
<ul>
<li>Salt</li>
<li>Pepper</li>
</ul>
Haml はインデントを使用して、個々の要素を HTML 構造として表現します。タグの子は、親タグよりもインデントされます。繰り返しになりますが、閉じタグは自動的に追加されます。たとえば
%p
Hello,
World!
要素の子としてプレーンテキストを配置することもできます。
%p
Date/Time:
- now = DateTime.now
%strong= now
- if now > DateTime.parse("December 31, 2006")
= "Happy new " + "year!"
Haml ドキュメントに Ruby コードを埋め込むことも可能です。等号(=
)を使用すると、コードの結果が出力されます。ハイフン(-
)を使用すると、コードは実行されますが、結果は出力されません。if
や while
などの制御文を使用することもできます。
Haml はここで紹介したものよりもはるかに多くのツールを提供しています。詳細については、リファレンスドキュメント を参照してください。
インデント
Haml のインデントは、1 つ以上のタブまたはスペースで構成できます。ただし、インデントは特定のドキュメント内で一貫している必要があります。ハードタブとスペースを混ぜることはできず、同じ数のタブまたはスペースを全体で使用しなければなりません。
貢献
貢献は大歓迎ですが、始める前にガイドラインをお読みください。
フォークしてローカルにリポジトリをクローンした後、Bundler をインストールし、それを利用して開発 gem の依存関係をインストールします: ~~~sh gem install bundler bundle install ~~~
これが完了したら、テストスイートを実行できるようになります: ~~~sh rake ~~~
この時点で rake
はエラーや警告なしで実行されるはずであり、パッチの作業を開始する準備が整います!
ruby -Itest test/helper_test.rb -n test_buffer_access
特定の領域に取り組んでいる場合は、テストスイートから1つのテストだけを実行することもできます。
Haml は現在、Ruby 2.0.0 以上をサポートしているため、変更が 2.0 以上で実行されるようにしてください。
チーム
國分 貴志
元メンバー
Haml は、元のインプリメンテーションの作者であるHampton Catlin によって作成されました。Hampton は日々のコーディングには関わっていませんが、言語の問題については引き続きコンサルティングを行っています。
Natalie Weizenbaum は長年にわたり、Haml の「現代的な」Ruby インプリメンテーションの主要開発者およびアーキテクトでした。
Norman Clarke は 2012 年から 2016 年まで Haml の主要メンテナーでした。
ライセンス
Natalie の Haml に関する一部の作業は、Unspace Interactive によってサポートされました。
それ以外では、この実装は MIT ライセンスの下でライセンス供与されています。
Copyright (c) 2006-2019 Hampton Catlin, Natalie Weizenbaum and the Haml team
このソフトウェアおよび関連するドキュメントファイル(以下「ソフトウェア」といいます)のコピーを取得したすべての人が、以下の条件に従って、制限なく、使用、複製、変更、マージ、公開、配布、サブライセンス、および/またはソフトウェアのコピーの販売を含む、ソフトウェアを自由に扱うことができます。
上記の著作権表示およびこの許諾表示は、ソフトウェアのすべてのコピーまたは実質的な部分に含まれるものとします。