On Sun, May 16, 2004 at 04:03:50AM +0900, Dirk Einecke wrote:
> Hi.

> Is there a faster way for example with a loop to write all given 
> parameters in local vars?

Well, you could do something with eval allong the following lines, but
It's a rather Bad Idea.

def setup(params, binding) 
  params.each do |key, val|
    eval("%s = %s" % [key, val[0]], binding)
  end
end

# the call to Kernel#binding method is the key here, since it allows you
# to assign to the variables within the correct scope.
setup(cgi.params, binding) 

A cleaner solution might well be to use a proxy object, which makes use
of the special method, method_missing to map keys to values.

class CgiParam 
  def initialize(params)
    @params = params
  end
  def method_missing(m, *other)
    @params[m.to_s][0]
  end
end

p = CgiParam.new(cgi.params)

.. if (p.foo) # do things
 ... unless (p.bar.to_i) # other things


Although there may still be a better way of doing it.
-- 
Ceri Storey <cez / necrofish.org.uk>