Sha256: 15bdc04367857a4e8035963de28e8255a529086a6cc59a0bb1d95d0729bb8fc5
Contents?: true
Size: 1.18 KB
Versions: 42
Compression:
Stored size: 1.18 KB
Contents
require 'active_support/core_ext/module/anonymous' require 'active_support/core_ext/module/reachable' class Class #:nodoc: # Rubinius if defined?(Class.__subclasses__) alias :subclasses :__subclasses__ def descendants descendants = [] __subclasses__.each do |k| descendants << k descendants.concat k.descendants end descendants end else # MRI begin ObjectSpace.each_object(Class.new) {} def descendants descendants = [] ObjectSpace.each_object(class << self; self; end) do |k| descendants.unshift k unless k == self end descendants end rescue StandardError # JRuby def descendants 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 # => [Bignum, Fixnum] def subclasses subclasses, chain = [], descendants chain.each do |k| subclasses << k unless chain.any? { |c| c > k } end subclasses end end end
Version data entries
42 entries across 42 versions & 3 rubygems