青山です。

まだ参照できるサンプルが少ないので雰囲気をつかみにくいかもしれませんが、
基本的な使い方は次のような感じになっています。

<element>string</element>
  cgi.element(){ "string" }
  cgi.element() do "string" end

<element attr1=value1 attr2=value2>
  cgi.element("attr1"=>"value1", "attr2"=>"value2")

<element attr1=value1 attr2=value2>string</element>
  cgi.element("attr1"=>"value1", "attr2"=>"value2"){ "string" }
  cgi.element("attr1"=>"value1", "attr2"=>"value2") do "string" end

element は html3.2, html4.0(Strict, Transitional, Frameset) の DTD に
あるものはすべてあります。各 DTD または適当なドキュメント、書籍等を参
照して下さい。

cgi = CGI.new("html3")    # html3.2
cgi = CGI.new("html4")    # html4.0 (Strict)
cgi = CGI.new("html4Tr")  # html4.0 Transitional
cgi = CGI.new("html4Fr")  # html4.0 Frameset

html 生成系の各メソッドは String を返しますので、適切に + で連結する必
要があります。このタイミングが、なれるまではちょっとわかりにくいですが、
基本的には各ブロックの最後以外はすべて + で連結していくという感じです。

また、CGI#a, CGI#submit など、利用率が高く、かつ attribute を同時に与
える場合が多いものについては、cgi.a("url") のようなインターフェイスも
用意されています。そのような例外については RD ドキュメントを参照して下
さい。

ただし、そのような別インターフェイスが用意されているものについても、通
常の cgi.a("href"=>'url") のような書き方も受け付けますので、拡張された
記述方法を調べなければならないという事はありません。

cgi.submit("value") も cgi.input("TYPE"=>"submit", "VALUE"=>"value")
のような書き方もできますし、基本的には、生成したい html の記述さえわかっ
ていれば、特に cgi.rb のドキュメントを調べる事無く、スクリプトを書く事
が出来るようになっています。


home = "/cgi-bin/catenary.cgi"
data = {}
require "cgi"
cgi = CGI.new("html3")
cgi.out("charset"=>"euc-jp") do
  cgi.html("lang"=>"ja", "PRETTY"=>"  ") do
    cgi.head(){ cgi.title(){ "Window title" } } +
    cgi.body() do
      cgi.form("post", home) do
        cgi.center() do
          cgi.hr +
          cgi.h2(){ "ケーブルの計算" } +
          cgi.hr +
          cgi.table() do
            cgi.tr() do
              cgi.td(){ "スパン(m)" } +
              cgi.td(){ cgi.text_field("sp", data["span"]) } +
              cgi.td(){ "高低差(m)" } +
              cgi.td(){ cgi.text_field("he", data["height"]) } +
              # ...
              cgi.td(){ "単位重量(t/m)" } +
              cgi.td(){ cgi.text_field("wc", data["weight"]) } +
              cgi.td(){ "断面積(m2)" } +
              cgi.td(){ cgi.text_field("ac", data["area"]) }
            end
          end +
          cgi.hr +
          cgi.submit("無応用長") +
          cgi.submit("平均張力") +
          cgi.submit("水平力") +
          cgi.submit("データクリア")
        end
      end
    end
  end
end


-- 
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>