Sha256: 2165d98c8fa2787f786f17bf3dea2e087fe2c9e2d58f76871ac7d7892963e897
Contents?: true
Size: 844 Bytes
Versions: 13
Compression:
Stored size: 844 Bytes
Contents
module AttrMethods def attr_array(*names) names.each do |n| self.send :define_method, n do |*value| if value.nil? || value.empty? return instance_variable_get("@#{n}") else self.send "#{n}=".to_sym, value.to_ary.flatten end end self.send :define_method, "#{n}=" do |value| instance_variable_set("@#{n}", value) end end end def attr_hash(*names) names.each do |n| self.class_eval(<<-EOF, __FILE__, __LINE__) def #{n}(*value) if value.nil? || value.empty? instance_variable_get("@#{n}") else instance_variable_set("@#{n}", value[0]) end end EOF self.send :define_method, "#{n}=" do |value| instance_variable_set("@#{n}", value) end end end end
Version data entries
13 entries across 13 versions & 1 rubygems