From: James Edward Gray II on
Begin forwarded message:

> From: "Sudheer Koganti" <sbkoganti(a)gmail.com>
> Date: October 9, 2007 12:16:13 AM CDT
> To: submission(a)rubyquiz.com
> Subject: Quiz 67 Solution
>
> Hi,
>
> I spent 3 days figuring out this solution. Though this quiz is way
> past, I'd like to send this solution anyway.
>
> class Module
> def attribute(arg, &block)
> a = arg.is_a?(Hash) ? arg.keys.first : arg
> p = proc do |me|
> if me.instance_variable_defined?("@#{a}") then
> me.instance_variable_get("@#{a}")
> elsif arg.is_a?(Hash)
> arg.values.first
> elsif block_given?
> me.instance_eval(&block)
> else nil end
> end
> define_method("#{a}") { p.call(self) }
> define_method("#{a}?") { p.call (self) ? true : false }
> define_method("#{a}=") { |val| instance_variable_set("@#{a}",
> val) }
> end
> end
>
>
> Thanks
> Sudheer
>
>