def class_attribute(*attrs)
options = attrs.extract_options!
instance_reader = options.fetch(:instance_reader, true)
instance_writer = options.fetch(:instance_writer, true)
attrs.each do |name|
class_eval "def self.\#{name}() nil end\ndef self.\#{name}?() !!\#{name} end\n\ndef self.\#{name}=(val)\nsingleton_class.class_eval do\nremove_possible_method(:\#{name})\ndefine_method(:\#{name}) { val }\nend\n\nif singleton_class?\nclass_eval do\nremove_possible_method(:\#{name})\ndef \#{name}\ndefined?(@\#{name}) ? @\#{name} : singleton_class.\#{name}\nend\nend\nend\nval\nend\n\nif instance_reader\nremove_possible_method :\#{name}\ndef \#{name}\ndefined?(@\#{name}) ? @\#{name} : self.class.\#{name}\nend\n\ndef \#{name}?\n!!\#{name}\nend\nend\n", __FILE__, __LINE__ + 1
attr_writer name if instance_writer
end
end