class SpinningWheel::Fabric

Attributes

class_name[R]
name[R]

Public Class Methods

new(name:, class_name:, &block) click to toggle source
# File lib/spinning_wheel/fabric.rb, line 6
def initialize(name:, class_name:, &block)
  @name = name
  @class_name = class_name
  @block = block
end

Public Instance Methods

build() click to toggle source
# File lib/spinning_wheel/fabric.rb, line 12
def build
  @klass = @class_name.constantize
  attributes = DSL.run(@block)
  parameters = @klass.instance_method(:initialize).parameters
  required_parametes = []
  parameters.each do |parameter|
    if parameter[0] == :req
      required_parametes << parameter[1]
    end
  end
  if required_parametes == attributes.keys
    @klass.new(*attributes.values)
  else
    @klass.new(**attributes)
  end
end