module TypeCollection::ClassMethods

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

Public Instance Methods

__tc_members() click to toggle source

Contains the Members mapped by type

# File lib/typecollection/class_methods.rb, line 15
def __tc_members(); @_members ||= { }; end
__tc_register_member(child) click to toggle source

Registers a member

# File lib/typecollection/class_methods.rb, line 18
def __tc_register_member(child)
  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
inherited(child) click to toggle source

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

Calls superclass method
# File lib/typecollection/class_methods.rb, line 32
def inherited(child)
  super if (defined?(super))
  unless child.name.nil?
    __tc_collection_root.__tc_register_member(child)
  end
end