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

Version Path
albacore-1.0.0 lib/albacore/support/attrmethods.rb
albacore-1.0.0.rc.3 lib/albacore/support/attrmethods.rb
albacore-0.3.6 lib/albacore/support/attrmethods.rb
albacore-1.0.0.rc.2 lib/albacore/support/attrmethods.rb
albacore-1.0.0.rc.1 lib/albacore/support/attrmethods.rb
albacore-0.3.5 lib/albacore/support/attrmethods.rb
albacore-0.3.4 lib/albacore/support/attrmethods.rb
albacore-0.3.3 lib/albacore/support/attrmethods.rb
albacore-0.3.2 lib/albacore/support/attrmethods.rb
albacore-0.3.1 lib/albacore/support/attrmethods.rb
albacore-0.3.0 lib/albacore/support/attrmethods.rb
albacore-0.2.7 lib/albacore/support/attrmethods.rb
albacore-0.2.6 lib/albacore/support/attrmethods.rb