Sha256: aab6eb87b0bebc72e1e29b00422486c2c3a55c39ebcaa3dd453725666f50f882
Contents?: true
Size: 982 Bytes
Versions: 118
Compression:
Stored size: 982 Bytes
Contents
require 'active_support/core_ext/module/anonymous' require 'active_support/core_ext/module/reachable' class Class begin ObjectSpace.each_object(Class.new) {} def descendants # :nodoc: descendants = [] ObjectSpace.each_object(singleton_class) do |k| descendants.unshift k unless k == self end descendants end rescue StandardError # JRuby def descendants # :nodoc: descendants = [] ObjectSpace.each_object(Class) do |k| descendants.unshift k if k < self end descendants.uniq! descendants end end # Returns an array with the direct children of +self+. # # Integer.subclasses # => [Fixnum, Bignum] # # class Foo; end # class Bar < Foo; end # class Baz < Bar; end # # Foo.subclasses # => [Bar] def subclasses subclasses, chain = [], descendants chain.each do |k| subclasses << k unless chain.any? { |c| c > k } end subclasses end end
Version data entries
118 entries across 113 versions & 11 rubygems