class Tzu::Step
Constants
- DOUBLE_MUTATOR
Attributes
klass[R]
single_mutator[R]
splat_mutator[R]
Public Class Methods
new(klass)
click to toggle source
# File lib/tzu/step.rb, line 8 def initialize(klass) @klass = klass @invoke_method = :run end
Public Instance Methods
as(name)
click to toggle source
# File lib/tzu/step.rb, line 38 def as(name) @name = name end
invoke_with(method)
click to toggle source
# File lib/tzu/step.rb, line 42 def invoke_with(method) @invoke_method = method end
name()
click to toggle source
# File lib/tzu/step.rb, line 23 def name return @name if @name && @name.is_a?(Symbol) @klass.to_s.split('::').last.symbolize end
receives(&block)
click to toggle source
# File lib/tzu/step.rb, line 28 def receives(&block) double_mutator_error if splat? @single_mutator = block end
receives_many(&block)
click to toggle source
# File lib/tzu/step.rb, line 33 def receives_many(&block) double_mutator_error if @single_mutator.present? @splat_mutator = block end
run(*params, prior_results)
click to toggle source
# File lib/tzu/step.rb, line 13 def run(*params, prior_results) # Forward parameters as splat if no mutators are defined return @klass.send(@invoke_method, *params) if mutator.nil? command_params = process(*params, prior_results) return @klass.send(@invoke_method, command_params) unless splat? @klass.send(@invoke_method, *command_params) end
Private Instance Methods
double_mutator_error()
click to toggle source
# File lib/tzu/step.rb, line 48 def double_mutator_error raise Tzu::InvalidSequence.new(DOUBLE_MUTATOR) end
mutator()
click to toggle source
# File lib/tzu/step.rb, line 52 def mutator @single_mutator || @splat_mutator end
process(*params, prior_results)
click to toggle source
# File lib/tzu/step.rb, line 60 def process(*params, prior_results) instance_exec(*params, prior_results, &mutator) end
splat?()
click to toggle source
# File lib/tzu/step.rb, line 56 def splat? @splat_mutator.present? end