class Faker::Bot::Reflector
@abstract `Faker::Base` Reflection object
-
Introspects the `Faker::Base` class and it's descendants
@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