Sha256: 03ee937699e270f9eab4aae98547aca7fce22f10cbd04e0239ed3ffea4d8ec78

Contents?: true

Size: 479 Bytes

Versions: 6

Compression:

Stored size: 479 Bytes

Contents

require 'active_support/core_ext/class/subclasses'

module MoreCoreExtensions
  module Descendants
    #
    # Retrieve a descendant by its name
    #
    def descendant_get(desc_name)
      return self if desc_name == name || desc_name.nil?
      klass = descendants.find { |desc| desc.name == desc_name }
      raise ArgumentError, "#{desc_name} is not a descendant of #{name}" unless klass
      klass
    end
  end
end

Object.send(:include, MoreCoreExtensions::Descendants)

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
more_core_extensions-3.8.0 lib/more_core_extensions/core_ext/object/descendants.rb
more_core_extensions-3.7.0 lib/more_core_extensions/core_ext/object/descendants.rb
more_core_extensions-3.6.0 lib/more_core_extensions/core_ext/object/descendants.rb
more_core_extensions-3.5.0 lib/more_core_extensions/core_ext/object/descendants.rb
more_core_extensions-3.4.0 lib/more_core_extensions/core_ext/object/descendants.rb
more_core_extensions-3.3.0 lib/more_core_extensions/core_ext/object/descendants.rb