From: Shin-ichiro Hara Date: 1999-02-17T23:30:27+09:00 Subject: [ruby-dev:5218] Re: htmlelem.rb (Re: HTML generator) 原です。 In message "[ruby-dev:5217] htmlelem.rb (Re: HTML generator)" on 99/02/17, Shin-ichiro Hara writes: |この様な文法を含む機能は持ってないのですが、簡単なものを書いてみ で、応用例として、簡単なリストとかテーブルとか作ってみました。 -----^ htmlutil.rb def bundle(*x) HtmlElement.new.insert(*x) end class HtmlList < HtmlElement def initialize(name = "UL", attr = nil) super(name, attr) end def add(*items) items.each { |item| e "LI" i item cr } self end end class HtmlDef < HtmlElement def initialize(attr = nil) super("DL", attr) end def add(dt, dd) e "DT" i dt e "DD" i dd cr self end end class HtmlTable < HtmlElement def initialize(aa, attr = "BORDER") @aa = aa super("TABLE", attr) @aa.each { |ary| line = t("TR") ary.each { |cell| line.t("TD") << cell } cr } end end -----$ htmlutil.rb e() は empty tag を cr は改行を表しています。 出力テスト: -----^ html2.rb #!/usr/bin/ruby require "htmlelem.rb" require "htmlutil.rb" html = HtmlElement.new form = HtmlElement.new list = HtmlList.new.add("a", "b", "c") dlist = HtmlDef.new.add("a", "A").add("b", "B").add("c", "C") html.t("HTML") { t("HEAD").t("TITLE") << "This is TITLE"; cr t("BODY") { t("H1") << "Ruby Page"; cr t("H2") << "What is Ruby?"; cr i form; cr hr i "List"; cr i list; cr hr i "Definitions"; cr i dlist; cr hr i "Table"; cr i HtmlTable.new([[1,2,3],[4,5],[7,8,9]]) } } form.t("FORM") { e("INPUT", {"TYPE"=>"button", "VALUE"=>"Button 1"}) i "You don't know." br i "You think that:" e("INPUT") { set_attr("TYPE", "text") set_attr("VALUE", "some text") } cr } list1 = HtmlList.new("OL") list.add bundle("d", list1) list1.add("A", "B").add("C") #print html html.cr >> $stdout -----$ html2.rb の結果が This is TITLE

Ruby Page

What is Ruby?

You don't know.
You think that:

List
Definitions
a
A
b
B
c
C

Table
123
45
789
となります。 もう少し資源を節約するような構造にすべきか。