class Quill::Factory

Attributes

dependencies[R]
feature[R]
klass[R]

Public Class Methods

new(klass, arguments={}) click to toggle source
# File lib/quill/factory.rb, line 5
def initialize(klass, arguments={})
  @feature = arguments.fetch(:feature)
  @dependencies = arguments[:dependencies] || []
  @curried = arguments[:curried]
  @klass = klass
end

Public Instance Methods

call(container) click to toggle source
# File lib/quill/factory.rb, line 12
def call(container)
  curried? ? construct_curried_proc(container) : construct_instance(container)
end

Private Instance Methods

construct_curried_proc(container) click to toggle source
# File lib/quill/factory.rb, line 29
def construct_curried_proc(container)
  ->(*args) { construct_instance(container, args) }
end
construct_instance(container, args=[]) click to toggle source
# File lib/quill/factory.rb, line 24
def construct_instance(container, args=[])
  arguments = fulfilled_dependencies(container) + args
  @instance ||= klass.new(*arguments)
end
curried?() click to toggle source
# File lib/quill/factory.rb, line 19
def curried?
  !!@curried
end
fulfilled_dependencies(container) click to toggle source
# File lib/quill/factory.rb, line 33
def fulfilled_dependencies(container)
  dependencies.map { |dep| container[dep] }
end