class Faker::Bot::Reflector

@abstract `Faker::Base` Reflection object

@api private

Attributes

descendants_with_methods[R]

@example Faker::Base subclasses with their methods

{ Faker::Marketing => [:buzzwords], Faker::Artist => [:name] }

@return [Hash[Class => [Array<Symbol>]]

@api private

Public Class Methods

call(*args) click to toggle source

Alternate constructor

@see initialize @see call

@api public

# File lib/faker/bot/reflector.rb, line 56
def self.call(*args)
  new(*args).call
end
descendants() click to toggle source

Select [Faker<Base>] subclasses

@return [Array<Class>] `Faker::Base` subclasses

@api private

# File lib/faker/bot/reflector.rb, line 23
def self.descendants
  @descendants ||= ObjectSpace.each_object(Class).select do |klass|
    klass < self
  end
end
my_singleton_methods() click to toggle source

Select public class methods

@return [Array] singleton public methods

@api private

# File lib/faker/bot/reflector.rb, line 35
def self.my_singleton_methods
  singleton_methods(false).select { |m| respond_to?(m) }
end
new(*) click to toggle source

Initialize the reflector

@api public

# File lib/faker/bot/reflector.rb, line 64
def initialize(*)
  @descendants_with_methods = Hash.new { |h, k| h[k] = [] }
end

Protected Instance Methods

faker_descendants() click to toggle source

Get all `Faker::Base` subclasses

@return [Array<Class>]

@api public

# File lib/faker/bot/reflector.rb, line 91
def faker_descendants
  @faker_descendants ||= Faker::Base.descendants
end
store(descendant, methods) click to toggle source

Adds a `Faker::Base` descendant methods to the method list

@param descendant [Class] The `Faker::Base` subclass @param methods [Array<Symbol>] The `Faker::Base` subclass methods

@return [Array<Symbol>]

@api private

# File lib/faker/bot/reflector.rb, line 79
def store(descendant, methods)
  return if methods.empty?

  descendants_with_methods[descendant].concat(methods)
end