From: "青山 和光" Date: 1997-10-15T09:56:55+09:00 Subject: [ruby-list:4987] cgi-lib.rb とりあえず HTML 3.2 のタグをすべて入れてみました。 #PCDATA だけは PCDATA にしてしまったので、使えません。また、サンプルを 書いていて気がついたのですが、ruby は Perl と異なり文字列中に式を入れ る事が可能なので、そちらの方が便利かもしれません。 しかし、まあ、無いよりはあった方が良いですし、なんといっても HTML のタ グだらけよりはずっと ruby らしく見えたりします。 ところで、このやり方だとイテレータが大量に出てきますが、どのくらいのオ ーバーヘッドなんでしょうか? 文字列中に式を埋めこむ方が早いような気も しますが。 #!/usr/local/bin/ruby require "cgi-lib.rb" include Html32 query = CGI.new if query.keys.include? "text" header html do head do title do print "query result" end end body do a %|HREF= "http://#{ENV['HTTP_HOST']}#{ENV['SCRIPT_NAME']}"| do print "retry" end h1 do print "query result" end pre do print query['text'] end hr end end else header html do head do title do print "form test" end end body do h1 do print "form test" end form 'METHOD="POST"' do textarea 'NAME="text" ROWS=25 COLS=80' do print "form test" end input 'TYPE="submit"' end end end end module Html32 ['html', 'head', 'body', 'plaintext', 'title', 'isindex', 'base', 'link', 'meta', 'style', 'script', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'pcdata', 'tt', 'i', 'b', 'u', 's', 'big', 'small', 'sub', 'sup', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'q', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'style', 'map', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'p', 'ul', 'ol', 'dir', 'menu', 'pre', 'xmp', 'listing', 'dl', 'div', 'center', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address'].each do |tag| eval " def #{tag}(opts = '') print \"<#{tag.upcase} \#{opts}>\" if iterator? yield print \"\" end end public :#{tag} " end end 青山 和光 Wakou Aoyama