トップ «前の日記(2004-12-03) 最新 次の日記(2004-12-05)» 編集 RDF

雄也の?日坊主日記


2004-12-04

_ [Ruby] cgi.rb の HTML フォーマッタ

はじめに

ことの発端はまつもとさんRuby講習会中級コース2日目 で cgi.rb を使った CGI の作り方をやったことからはじまる.

cgi.rb のフォーマッタが気に入っている点

僕は cgi.rb の HTML フォーマッタ部分は結構気に入っている. 気に入っている理由として,

  • HTML の開きタグと閉じタグの代わりにブロック呼び出しで表現できる.
  • 開きタグが持つ属性を引数で指定できる.

この 2 点がある.

以下のようなコードを見ると, Ruby っぽく HTML を表現しているように見える.

cgi.html("lang" => "ja") {
  cgi.body {
    cgi.p {
      "本文っすよ〜."
    }
  }
}

連結についての提案

cgi.rb のフォーマッタはあまり使われていないためか, タグを含む連結をするときに

cgi.html("lang" => "ja") {
  cgi.body {
    cgi.p {
      "本文っすよ〜." + cgi.br + "2行目っす〜." +
      cgi.a("href" => "http://www.ruby-lang.org/") {
        "Ruby"
      }
    }
  }
}

のように + で連結することを想像する方が多い.

演算子 + で連結すると ruby-mode.el でコードを書いたときに 字下げがいやなことになる. したがって,そのために cgi.rb から去った Rubyist も少なくない(と思う).

そこで本日記では,配列を使って連結することを提案する.

具体的には,上記のコードを以下のように書き換えることで, ruby-mode.el でも気持ちのいい字下げが可能となる.

cgi.html("lang" => "ja") {
  cgi.body {
    cgi.p {
      [
        "本文っすよ〜.",
        cgi.br,
        "2行目っす〜.",
        cgi.a("href" => "http://www.ruby-lang.org/") {
          "Ruby"
        },
      ]
    }
  }
}

その他

  • cgi.rb のフォーマッタが吐く HTML は一行だけん, 人間が出力を確認するにはちょっとえらい. そういう場合には CGI.pretty を使いましょう. たとえば,

    cgi.out do
      cgi.html {
        あげこげ
      }
    end

    は,

    cgi.out do
      s = cgi.html {
        あげこげ
      }
      CGI.pretty(s)
    end

    とすることで,みやすい HTML を吐いてくれます.

  • 前田さんからは,ブロック呼び出しの使い方として 間違っているという指摘があった. うーん,確かに使い方が間違っているのかもしれないですけど, 見た目のみってことで御勘弁を〜.
  • とはいえ,ちゃんとした Web アプリケーションを作ろうとした場合は, やっぱりちゃんとしたフレームワークの方が作りやすいんだろうなあ.

_ [music][高専] ジャズバンドのライブ

栗原さんに誘われて,槇野さんと三人で CTC というジャズバンドのライブに行った.

このバンドは結成されてから約一年で今日が初ライブということだった. 参加している人々は老若男女まんべんなく揃っているといった感じで, 50,60代のおっつぁんおばさんもいれば,小学生くらいの子供までいる. まあ子供は親御さんに連れてこられたと考えると下は20代からか.

ギターの人は年季が入っているようで歌もうまいし,ドラムの人もすごかったな. ベースの方*1が MC していた.

*1  槇野さんの知り合いでわたなべさんという

_ [高専] 居酒屋 天

三人で天に行く.

槇野さんが前,昼に来たときに 牧場の夢 *1 という焼酎がずっと気になっていたということだったので, それを呑みに来たというところだ.

槇野さんが別売のクーポン券*2 を持っていたため,三人で 11000 円ちょっとだったのが, 6000 円ちょっとまで値引きされた. 呑み喰い代としては一人 2000 円ってのは破格だと思う.

*1  なぜ気になっていたかは 天 に行けばわかる

*2  会社に一度訪問販売で売りに来たことがあるやつ


2004|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|
2006|05|
2007|04|05|09|10|11|
2008|04|05|08|10|11|
2009|02|03|04|05|06|07|08|09|10|11|
2010|02|03|04|07|10|
2011|04|08|
2012|02|10|
2014|05|06|08|
2018|03|
楽天で探す
楽天市場
キーワードから探す
楽天トラベル