トップ «前の日記(2005-03-07) 最新 次の日記(2005-03-09)» 編集

3 日坊主日記


2005-03-08 [長年日記]

_ TU-KA HTML->HDML 変換

謎い。

四国では TU-KA 売ってないのですよ。実機 plz

_ [Apollo] for Delphi 2005

http://wiki.fdiary.net/apollo/?MakingApolloDelphi2005

Apollo の範囲では Delphi6 との互換性はあるらしい。

_ [Rails] Eleven

RoR で書いてみました。みかけだけ。^^;

  • foo_controller.rb:
 require 'eleven'

 class FooController < ApplicationController
   include Eleven
   statesafe :first, :last

   display {
     print "Please enter your name."
     edit "First name: ", @first
     edit "Last name: ", @last
   }

   display {
     print "Thank you, ", @first, " ", @last, "."
   }
 end
  • helper/eleven.rb:
 module Eleven
   def self.append_features(base)
     super
     base.extend(ClassMethods)
   end

   class SS
     def initialize(name, value)
       @name = name
       @value = value
     end
     attr_accessor :name, :value
   end

   DISP_PROCS = []

   module ClassMethods
     def statesafe(*varnames)
       stmt = varnames.map {|varname|
         %[ @#{varname} = SS.new("#{varname}", @session["#{varname}"]) ]
       }
       module_eval <<-"end_eval", __FILE__, __LINE__
         def _statesafe
           #{stmt.join("\n")}
         end
       end_eval
     end

     def display(&b)
       DISP_PROCS.push b
     end
   end

   def index
     disp
   end

   def disp
     @params["ss"] && @params["ss"].each {|name, value|
       @session[name] = value
     }
     _statesafe
     disp_id = @params["id"].to_i
     @html = <<EOT
 <form action="/foo/disp/#{disp_id+1}" method="post">
 EOT
     self.instance_eval &DISP_PROCS[disp_id]
     @html << <<EOT
 <input type="submit" value="Continue">
 <input type="button" value="Logout">
 </form>
 EOT
     render_text @html
   end

   def h(str)
     CGI.escapeHTML(str)
   end
   private :h

   def print(*opts)
     @html << "<p>"
     opts.each {|opt|
       case opt
       when String
         @html << h(opt)
       when SS
         @html << h(opt.value.to_s)
       end
     }
     @html << "</p>"
   end

   def edit(caption, ss)
     @html << "<p>"
     @html << h(caption)
     @html << %[<input type="text" name="ss[#{h ss.name}]" value="#{h ss.value}">]
     @html << "</p>"
   end
 end

ActionController しか使ってないから RoR ぽくない。

ActionView だと入れ子が書きにくいので展開してしまったけど、Amrita だとそのまんまなのかもしれない。

[]