Slimでセレクタを追加するときの書き方、及び Middleman の素晴らしさ。

よく、要素につけるidやclassを動的にしたい時とかに、Hamlだとこんな感じの書き方をする


%li{class: "item #{item.name}"}
この書き方がSlimだとダメっぽくてつまずいた。
Slimだとこんな感じの書き方になるらしい

li[class="item #{item.name}"]
こういうのもいけるっぽい。割と素のHTMLに近い感じで書けるのですね。

li class="item #{item.name}"
そして条件つけるとこうなるっぽい

li class=(if item.present? ? "#{item.name}" : 'no-item')
li class=("#{item.name}" if item.present?)
classを複数付け、かつ1つのclassにのみ条件を付加する場合はこのように入れ子にすればよいみたい。

li class="item #{if item.present? ? "#{item.name}" : 'no-item'}"
li class="item #{"#{item.name}" if item.present?}"

Slim + Middleman で静的サイト作ってみたのけど、MiddlemanコンテンツをYamlに置いて外部化して、簡易CMSっぽいものを作るのがとても簡単で驚いている。これにより、コンテンツとテンプレートをキレイに分離できる。静的サイトなのに、工夫次第で一切類似要素をコピペせずにDRYに作れるのがとても素晴らしい。RailsActionView::Helpers(に似たようなの ※追記参照)も使えるし、SassもHamlCompassCoffeeScriptもすぐに使える。middleman buildってコマンド打つだけでhtmlの静的サイト一式をガガーっと一瞬で吐き出してくれるし、書きだすサイトのリンクや画像などのアセットが相対パスなのか絶対パスなのかも設定で用意されてて、configに一行書くだけで変えられる。必要に応じてzip納品可能なサイト一式もbuildですぐに吐き出せもすれば、Herokuとかにデプロイもできるのだ。
Middlemanはまさしく常日頃からこういうの欲しいなーと思ってたそのものだった。怠けたいWebデザイナーにとってのライフチェンジングだ。
Slim も初めて書いたけど、これもシンプルで見た目キレイで良いですね。Hamlと対して違わないので、HamlやJadeに慣れた人なら、 群馬の Middleman + Slim エヴァンジェリストである @yterajima さんのこれとか読めば5分で書けるようになる。|(パイプ)を使った表記にだけ最初少し慣れなかったけど、これもよく出来ていて、視覚的にも縦棒が入ることによって階層構造がわかりやすくなるのがカッコイイ。
しかし、Middlemanもそうですけど、Sassやその周辺といい、HamlやSlimといい、Ruby周りは、全部コマンドラインが必要であるという入り口の障壁以外は、とことんデザイナーにとって優しく思いやりのある環境なのではないか?…と思ったけど、これおそらく別にデザイナーのためにってわけでもなくて、HTMLとかCSSとかを触るはめになったプログラマ達が、あまりの効率の悪さへの苦痛から、なんとかこれをアレしてやろうとアレした結果なのだろうと思った。彼らのコピペに対する憎しみが世界を良りよい場所へと変えているのだ。感動的であり、大変ありがたい。
おかげさまで、そろそろ素のHTMLとかもう書かないでも生きていけるような気がしてきたので、とてもうれしい。とてもうれしいです。

#追記
ご指摘いただきました。そうか、ActionView::Helpers そのものではなくて、それに似せて作られたヘルパーが使えるということですね。言われてみればそうだよなあ。。
今は padrino-helpers と sprockets-helpers の併用らしい。ありがとうございました!

# 追記その2
メモ程度に書いたものが思ったよりも人に読まれてしまい照れている。。ものを書くのがこんなに辛いのにどうしてメモ程度のものなら書けるんだろうか…そしてそういうものほどたまに読まれたりするのなぜなんだろう(ありがたいけど)。
そうそう、Middleman他にもいい所ありすぎて書ききれないのだけど、自分のようなプログラミング素人が、Railsほど難しくなく、普段の仕事の静的サイト作りとかの中で、比較的気軽にプログラミングっぽい気分の断片を味わえるのも、すごく良いところの一つだと思う。私はほんのちょっとしかやったことがないのでわからないのだけど、Middleman のベースである Sinatra がそもそもそういう感じなのかもしれない。
先日の初心者はRailsから入るべきでないという盛り上がった話題を思い出す。自分も素人Railsやってて確かにわけわからんこと多くて難しいし(でも半分趣味だしやってておもしろいしまあいいのではとも思ってるから辞めはしない、Rails好きだし。)、プログラミング覚えたいデザイナーやマークアッパーにもし最初の一歩として何か勧めるなら 今は Middleman かもなーって思った。普通に自分の仕事の範囲内で、無理も危険もあまりなくプログラミングのエッセンスが味わえるし、結果的に普段の仕事も楽になるんだから一石二鳥で素晴らしい。こういうの欲しかった!ってきっと思えると思う。データとビューを分割することの意義も身近な所で実感できそうだ。ViewだけならかなりRailsに近い要素あるし、Middlemanを経てRailsっていうのは良さそう。納得だ。日本語ドキュメントも @yterajima さんの尽力のおかげでかなり充実しており、そんなに困ることがなかった。
なんかそのうち、デザイナー(っていうか自分)が静的サイトのワークフローをさらに楽にこなすための Middleman のカスタムフレームワーク 的なものとかを作ってみたい気もしてきた。そのうち、そのうち。。