Module: MoreCoreExtensions::ClassHierarchy

Defined in:
lib/more_core_extensions/core_ext/class/hierarchy.rb

Instance Method Summary collapse

Instance Method Details

#hierarchyObject

Returns a tree-like Hash structure of all descendants.

require 'socket'
IO.hierarchy
# => {BasicSocket=>
#      {Socket=>{},
#       IPSocket=>{TCPSocket=>{TCPServer=>{}}, UDPSocket=>{}},
#       UNIXSocket=>{UNIXServer=>{}}},
#     File=>{}}


15
16
17
# File 'lib/more_core_extensions/core_ext/class/hierarchy.rb', line 15

def hierarchy
  subclasses.each_with_object({}) { |k, h| h[k] = k.hierarchy }
end

#lineageObject

Returns an Array of all superclasses.

require 'socket'
TCPServer.lineage
# => [TCPSocket, IPSocket, BasicSocket, IO, Object, BasicObject]


24
25
26
# File 'lib/more_core_extensions/core_ext/class/hierarchy.rb', line 24

def lineage
  superclass.nil? ? [] : superclass.lineage.unshift(superclass)
end