module ConcreteAttributes

Constants

VERSION

Public Instance Methods

concrete_attribute(*attr) click to toggle source
# File lib/concrete_attributes.rb, line 5
def concrete_attribute(*attr)
  attr.each do |prop|
    instance_eval %Q{
      def #{prop}=(v)
        @#{prop} = v
      end

      def #{prop}
        return @#{prop} if instance_variable_defined?(:@#{prop})
        @#{prop} = concrete_for(self, :#{prop})
      end
    }
  end
end
concrete_for(klass, method) click to toggle source
# File lib/concrete_attributes.rb, line 20
def concrete_for(klass, method)
  parent = klass.superclass
  return unless parent.respond_to?(method)

  parent.public_send(method)
end