module ProcToLambda
Constants
- VERSION
Public Class Methods
to_lambda(source_proc)
click to toggle source
Convert proc to lambda, retain the context.
@param [Proc] source_proc @example
my_proc = proc { return self + 1 } my_lambda = ProcToLambda.to_lambda(my_proc) 1.instance_exec(&my_lambda) # => 2
# File lib/proc-to-lambda.rb, line 20 def self.to_lambda(source_proc) raise "Supplied argument must be a `Proc`" unless source_proc.is_a?(::Proc) return source_proc if source_proc.lambda? unbound_method = ::Module.new.module_eval do instance_method(define_method(:_, &source_proc)) end lambda do |*args, &block| unbound_method.bind(self).call(*args, &block) end end
Public Instance Methods
to_lambda(source_proc)
click to toggle source
Same as the class method to_lambda
Use to include
# File lib/proc-to-lambda.rb, line 8 def to_lambda(source_proc) ::ProcToLambda.to_lambda(source_proc) end