From: Daniel Schierbeck Date: 2006-06-07T18:51:01+09:00 Subject: Re: Two questions about data structures. I'm such a nice guy... class Entity def initialize @opts = {:left_handed => false, :red_haired => true} end def method_missing(name, *args) key = name.to_s[0..-2].to_sym case name.to_s when /\?$/ value = @opts[key] if value.respond_to? :to_sym if value.to_s =~ /!$/ !@opts[value.to_s[0..-2].to_sym] else @opts[value.to_sym] end elsif value.respond_to? :to_proc instance_eval(&value) else value end when /=$/ @opts[key] = args.first when /!$/ @opts[key] = !@opts[key] else super end end end entity = Entity.new entity.likes_hendrix = true entity.long_haired = true entity.hippie = proc{long_haired? and likes_hendrix?} entity.hippie? => true Cheers, Daniel