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