class FiniteMachine::Callable
A generic interface for executing strings, symbol methods or procs.
Attributes
object[R]
Public Class Methods
new(object)
click to toggle source
Initialize a Callable
@param [Symbol, String, Proc] object
the callable object
@api public
# File lib/finite_machine/callable.rb, line 15 def initialize(object) @object = object end
Public Instance Methods
call(target, *args, &block)
click to toggle source
Execute action
@param [Object] target
@api public
# File lib/finite_machine/callable.rb, line 31 def call(target, *args, &block) case object when Symbol target.public_send(object.to_sym, *args, &block) when String string = args.empty? ? "-> { #{object} }" : "-> { #{object}(*#{args}) }" value = eval(string) target.instance_exec(&value) when ::Proc object.arity.zero? ? object.call : object.call(target, *args) else raise ArgumentError, "Unknown callable #{object}" end end
invert()
click to toggle source
Invert callable
@api public
# File lib/finite_machine/callable.rb, line 22 def invert ->(*args, &block) { !call(*args, &block) } end