Module: Asbestos::ClassCollection::ClassMethods

Defined in:
lib/asbestos.rb

Instance Method Summary collapse

Instance Method Details

#class_collection(name, base = self) ⇒ Object


74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/asbestos.rb', line 74

def class_collection(name, base = self)
  # this is a little nasty, the 'name' variable isn't available
  # in the scope of the eigenclass, so we have to class_eval
  # the eigenclass
  (class << base; self; end).instance_eval do
    extend ::Forwardable

    attr_accessor name
    def_delegators name, :[], :[]= if name == :all
  end

  Hash.new.tap do |hash|
    Asbestos.with_indifferent_access! hash
    base.instance_variable_set "@#{name}", hash
  end
end