週刊Elixirライブラリ2015-5
Elixirのライブラリの解説を週ごとにお届けする記事です。
解説が間違っていた場合には、コメントか@hayabusa333にご連絡くださると嬉しいです。
今週はCalliopeについて
# Calliope is 何?
CalliopeはElixirのHamlパーサになります。
# 実行環境
OS:OS X Yosemite
Erlang:Eshell V6.5, OTP-Version 18
Elixir:v1.0.4
# Calliopeの実行を試すために新規プロジェクトの作成
$ mix new my_calliope $ cd my_calliope
# HexにてCalliope をインストールするために設定ファイルの記載を行う
$ vim mix.exs
mix.exsの内容は下記となります。
defmodule MyCalliope.Mixfile do use Mix.Project def project do [app: :my_calliope, version: "0.0.1", elixir: "~> 1.0", build_embedded: Mix.env == :prod, start_permanent: Mix.env == :prod, deps: deps] end # Configuration for the OTP application # # Type `mix help compile.app` for more information def application do [applications: [:logger]] end # Dependencies can be Hex packages: # # {:mydep, '~> 0.3.0'} # # Or git/path repositories: # # {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"} # # Type `mix help deps` for more examples and options defp deps do [ {:calliope, github: "nurugger07/calliope"} ] end end
# 依存関係の解決を行います。
$ mix deps.get $ mix deps.compile
# Calliopeを実際に使ってみる
Calliopeを実際に使ってみて、Hamlの記法がHTMLへと変換されることを確認
$ iex -S mix iex(1)> Calliope.render "%h1 Welcome to Calliope" "<h1>Welcome to Calliope</h1>"
# Trot にて Calliopeを使ってみる
HAMLを使って、HTMLを記載できるとなると、ブラウザから確認がしたくなります。
そこで以前に紹介いたしました。Trotにて実際に確認を行ってみましょう
Trotのインストールまでは下記をごらんください
週刊Elixirライブラリ2015-3
Trotの準備は完了している前提でお話しさせていただきます。
# テンプレートを記載
まずはテンプレート用のディレクトリを作成し、Hamlの記載を行います。
$ mkdir -p priv/templates $ vim priv/templates/hello_haml.html.haml
priv/templates/hello_haml.html.hamlの内容は以下となります。
%html %head %title Haml Template %body %h1 Haml Template %p <%= @message %>
# my_trot に新規にテンプレートのルートを追加します。
$ vim lib/my_trot.ex
lib/my_trot.exの内容は以下となります。
defmodule MyTrot do use Trot.Router # テンプレートを使用することを明示する use Trot.Template get "/", do: 200 post "/hello" do # ヘッダーのparamを取得するために実行 # bodyのparamは下記のメソッドでは取得できない模様 conn = fetch_query_params(conn) # URLからパラメータが取得できたかをコンソール表示(デバッグ用) IO.inspect conn.params # conn.params["name"]にて、ヘッダーにて取得されたパラメータの # name属性の値を表示するように指定 "Hello Trot is #{conn.params["name"]}!!" end # Haml用に新しいURLのルートを作成 get "/hello/haml" do render_template("hello_haml.html.haml", [message: "Hello Haml"]) end import_routes Trot.NotFound end
MyTrotを実行します。
$ iex -S mix
以下のURLにアクセスを行います。
URL:http://localhost:4000/hello/haml
出力結果:Hello Haml Template
Hello Haml Templateが表示されたら成功です。
これでHTML形式にて記載を行わなくてもHTMLを書くことができるようになりました。
Trotには標準でCalliopeが内部にインストールされるようになっておりますので使用してみてはいかがでしょうか
# 参考サイト
テンプレートをレンダリングするだけの簡単なお仕事〜
# まとめ
今回はHamlパーサのCalliopeをご紹介いたしました。
上記でも記載いたしましたが以前に紹介させていただきました TrotにはCalliopeは標準にて使用できるためHamlにてHTMLファイルを記載してみてはいかがでしょうか。
面白いWebアプリケーションができるのが楽しみです。
それでは皆様、良いElixirライフを