Sha256: a6f2efca637cd058a069dc73847569187a2695f9bdc79ab73ef2318f98c15dc9

Contents?: true

Size: 827 Bytes

Versions: 2

Compression:

Stored size: 827 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.send :define_method, n do |*value|
        if value.nil? || value.empty?
          instance_variable_get("@#{n}")
        else
          instance_variable_set("@#{n}", value[0])
        end
      end
      self.send :define_method, "#{n}=" do |value|
        instance_variable_set("@#{n}", value)
      end
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
albacore-0.2.0.preview2 lib/albacore/support/attrmethods.rb
albacore-0.2.0.preview1 lib/albacore/support/attrmethods.rb