Sha256: 0630e24c7b3229e0d43234861569d48917eab4422e9a9db6cb57a7300eea84dc
Contents?: true
Size: 980 Bytes
Versions: 1
Compression:
Stored size: 980 Bytes
Contents
# encoding: utf-8 module FiniteMachine # A generic interface for executing strings, symbol methods or procs. class Callable attr_reader :object # Initialize a Callable # # @param [Symbol, String, Proc] object # the callable object # # @api public def initialize(object) @object = object end # Invert callable # # @api public def invert lambda { |*args, &block| !self.call(*args, &block) } end # Execute action # # @param [Object] target # # @api public def call(target, *args, &block) case object when Symbol target.__send__(@object.to_sym) when String value = eval "lambda { #{@object} }" target.instance_exec(&value) when ::Proc object.arity.zero? ? object.call : object.call(target, *args) else raise ArgumentError, "Unknown callable #{@object}" end end end # Callable end # FiniteMachine
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
finite_machine-0.2.0 | lib/finite_machine/callable.rb |