From: "Phil Tomson" <philtomson@gmail.com>
Date: February 18, 2006 6:46:02 PM CST
To: submission@rubyquiz.com
Subject: [SOLUTION] Quiz #67 metakoans.rbJames,
Fun quiz!
I don't subscribe to ruby-talk and the c.l.r bridge has been a bit
flakey (I didn't see your original post for this quiz on c.l.r, only
the responses) and I'll be out all day tomorrow.... so I include my
solution below.Phil
#knowledge.rb
class Module
def attribute(h_or_s, &b)
if h_or_s.class == Hash
str, val = h_or_s.keys[0].to_s, h_or_s.values[0]
elsif h_or_s.class == String
str, val = h_or_s.to_s, 0
end
if block_given?
val = :init_block
define_method(val, &b)
end
class_eval "def #{str}; @#{str}||=#{val} ; end"
class_eval "def #{str}=(val); @#{str}=val; end"
class_eval "def #{str}?; @#{str} ? true : false ; end"
end
end
···
Begin forwarded message: