Module: TypeCollection::ClassMethods

Defined in:
lib/typecollection/class_methods.rb

Overview

Extended by TypeCollections to provide class level functionality (almost all functionality is class level as of the current design)

Instance Method Summary collapse

Instance Method Details

#__tc_membersObject

Contains the Members mapped by type



15
# File 'lib/typecollection/class_methods.rb', line 15

def __tc_members(); @_members ||= { }; end

#inherited(child) ⇒ Object

Overrides the default behavior when being extended by a child class. It ensures the child is mapped for future retrieval and checks the subclass name to ensure it is a valid one



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/typecollection/class_methods.rb', line 20

def inherited(child)
  super if (defined?(super))
  type = child.inferred_type()
  if (type.nil?)
    cname = child.name.split("::").last
    pname = self.name.split("::").last
    error = "Invalid Name: #{ cname }! Child class names must end with \"#{ pname }\"."
    raise TypeCollection::InvalidChildType.new(error)
  end
  __tc_members()[type] = child
end