Launchy::DescendantTracker

Use by either

class Foo
  extend DescendantTracker
end

or

class Foo
  class << self
    include DescendantTracker
  end
end

It will track all the classes that inherit from the extended class and keep them in a Set that is available via the ‘children’ method.

Public Instance Methods

children() click to toggle source

The list of children that are registered

# File lib/launchy/descendant_tracker.rb, line 31
def children
  unless defined? @children
    @children = Set.new
  end
  return @children
end
find_child( method, *args ) click to toggle source

Find one of the child classes by calling the given method and passing all the rest of the parameters to that method in each child

# File lib/launchy/descendant_tracker.rb, line 42
def find_child( method, *args )
  klass = children.find do |child|
    Launchy.log "Checking if class #{child} is the one for #{method}(#{args.join(', ')})}"
    child.send( method, *args )
  end
end
inherited( klass ) click to toggle source
# File lib/launchy/descendant_tracker.rb, line 23
def inherited( klass )
  return unless klass.instance_of?( Class )
  self.children << klass
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.