Hamlを使ってみた

Tsukasa OISHI

ウワサのHamlを使ってみました。Hamlの文法は簡単です。 本家サイトのチュートリアルを読んでも読まなくても書けるくらい。
というわけで、まずはkaeruspoonのlayoutsビューファイルをHamlにしてみました。以下のような感じです。すごく簡潔でいいですね。

app/views/layout/application.html.haml

!!! XML
!!! 1.1
%html
  %head
    %meta{:name => "Description", :content => "おおいしつかさのブログです。"}
    %meta{:name => "Keywords", :content => "Ruby,programming,bike,drive,novel,book"}
    %meta{:name => "Author", :content => "OISHI Tsukasa"}
    %title= h(@title)
    = auto_discovery_link_tag :atom, formatted_articles_url("atom")
    = stylesheet_link_tag 'all'

  %body
    #container
      #header
        %ul#header_menu
          %li= link_to "ブログ", articles_path
          %li= link_to "写真", "http://image.kaeruspoon.net/tsukasa/pictures"
          %li= link_to "キーワード", keywords_path
          %li= link_to "ブックマーク", "http://b.hatena.ne.jp/tsukasa_oishi/"
          - if logged_in?
            %li= link_to "ログ", date_visiters_path
            %li= link_to "アカウント", edit_user_path
            %li= link_to "ログアウト", :controller => "account", :action => "logout"
          - else
            %li= link_to "ログイン", :controller => "account", :action => "login"

        %h1#logo= link_to(image_tag('title.png'), articles_path)

      #content
        = yield :layout

      #side_bar
        = render :partial => "share/twitter"
        = render :partial => "share/profile"
        = render :partial => "share/amazon"
        = render :partial => "share/ranking"
        = render :partial => "share/comments"
        = render :partial => "share/archives"
        = render :partial => "share/keywords"
        = render :partial => "share/youtube"
        = render :partial => "share/nico"

    = javascript_include_tag :all, :cache => true
    = javascript_tag %Q|Rounded("div#content", "#000", "#181818"); Rounded("div#side_bar", "#000", "#121212"); try{window.addEventListener("load",prettyPrint,false);}catch(e){window.attachEvent("onload",prettyPrint);}|

ひとつの不満はネストでブロックを表現しているところ。ちょっと気持ち悪いです。そのせいでjavascript_tagの中が綺麗に書けませんでした。

追記
あれ、改行すると勝手にネストされている。なんだろう。とりあえず元に戻します。