class Payload::PartialInstance

Returned by {Factory#apply}.

Used to build up arguments for invoking factory definitions.

@see Factory#apply Factory#apply for usage.

Public Class Methods

new(instance, positional = [], keywords = {}) click to toggle source

Used internally by {Factory}.

@api private

# File lib/payload/partial_instance.rb, line 11
def initialize(instance, positional = [], keywords = {})
  @instance = instance
  @positional = positional
  @keywords = keywords
end

Public Instance Methods

apply(*positional, **keywords) click to toggle source

@see Factory#apply Factory#apply for usage.

# File lib/payload/partial_instance.rb, line 18
def apply(*positional, **keywords)
  self.class.new(
    @instance,
    @positional + positional,
    @keywords.merge(keywords)
  )
end
method_missing(name, *positional, **keywords, &block) click to toggle source

Applies final arguments and invokes the missing method on the target.

@see Factory#new Factory#new for usage.

# File lib/payload/partial_instance.rb, line 29
def method_missing(name, *positional, **keywords, &block)
  apply(*positional, **keywords).evaluate(name, &block)
end

Protected Instance Methods

evaluate(name, &block) click to toggle source
# File lib/payload/partial_instance.rb, line 35
def evaluate(name, &block)
  @instance.public_send(name, *arguments, &block)
end

Private Instance Methods

arguments() click to toggle source
# File lib/payload/partial_instance.rb, line 41
def arguments
  @positional + keyword_arguments
end
keyword_arguments() click to toggle source
# File lib/payload/partial_instance.rb, line 45
def keyword_arguments
  if @keywords.empty?
    []
  else
    [@keywords]
  end
end
respond_to_missing?(*arguments) click to toggle source
# File lib/payload/partial_instance.rb, line 53
def respond_to_missing?(*arguments)
  @instance.respond_to?(*arguments)
end