トップ «前の日記(2010-11-30) 最新 次の日記(2010-12-03)» 編集

Route 477



2010-12-01

[ruby][rails] Hamlを越えるシンプルさを実現したテンプレートエンジン、Slim

今日から始まるRuby Advent Calendar jp: 2010参加記事です。

Rails界隈ではHTML(ERB)よりシンプルなテンプレートエンジンとしてHamlが人気ですが、SlimはHamlからさらに記号を減らしたようなテンプレートエンジンです。

! doctype html
html
  head
    title Hello Slim

  body
    h1 Hello, Slim!

    div id="main"
      | これはSlimのサンプルです。
      | シンプルでしょう?

      p.note
        | Hamlのように「#」や「.」を使うこともできます。

Rails 3で使う場合、

 gem 'slim', :require => 'slim/rails'

と書くだけでOKです。簡単ですね。

久しぶりに公式サイトを見たら、logic-less modeという謎機能が追加されてたりして、活発に開発が進んでいるようです。

[ruby] YARV(Ruby 1.9)の中間言語の命令一覧サイトを作りました

命令一覧サイトって何だっていう話ですが、見れば分かると思います。

insns.defをもうちょっと見やすくできるといいなーと思って作業していたらこんなことに…。全てのバイトコード好きに捧ぐ!*1

目的はいくつかありますが:

  • 自分の勉強のため
  • Ruby本体の開発者を増えるといいですね
  • 言語処理系の開発に興味がある人に
  • 全ての中間命令にpermalinkを用意する

とか?

実際に中間言語へのコンパイルを試してみる機能とかもあるのでぜひ遊んでみてください。*2

解説はinsns.defから取ってきたそのままなのでかなり簡潔ですが、日本語ならるびまの記事がとてもまとまっているのでおすすめです。(英語は…)

ところで最適化用命令の一覧(つまり、Rubyプログラムを動かすのに最低限必要な命令の一覧)が欲しいんですが、opt_が付いているのがそうだと思えばいいんでしょうか。

実装について

Heroku + Sinatra + Slimという感じです。個人的に、複雑なフォームがあるものはRails使った方が楽だと思ってるんですがこれくらいなら全然大丈夫でした。

Slimは本当に素晴らしいです。Shiftキーを押す回数(%, <, >, ..)が少ないところとか。 試行錯誤がすごい速さでできるので、もう生HTMLには戻れないかも…。

*1 YARVは「バイト」コードではないですけど

*2 実装はRubyVM::InstructionSequence.compileを呼んでいるだけです