Class: Class

Inherits:
Object show all
Defined in:
lib/golly-utils/ruby_ext/classes_and_types.rb

Instance Method Summary collapse

Instance Method Details

#subclasses(include_subclassed_nodes = false) ⇒ Array<Class>

Returns a list of classes that extend this class, directly or indirectly (as in subclasses of subclasses).

Examples:

# Given the following class heirarchy:
#   A
#   |
#   +--B
#   |  +--B1
#   |  +--B2
#   |
#   +--C

A.subclasses         # => [B1, B2, C]
A.subclasses(false)  # => [B1, B2, C]
A.subclasses(true)   # => [B, B1, B2, C]

Parameters:

  • include_subclassed_nodes (defaults to: false)

    If true then classes extended by other classes are returned. If false then you only get the end nodes.

Returns:



29
30
31
32
33
34
# File 'lib/golly-utils/ruby_ext/classes_and_types.rb', line 29

def subclasses(include_subclassed_nodes = false)
  @subclasses ||= []
  classes= @subclasses.inject( [] ) {|list, subclass| list.push subclass, *subclass.subclasses }
  classes.reject! {|c| classes.any?{|i| c != i and c.subclasses.include?(i) }} unless include_subclassed_nodes
  classes
end