Sha256: 03647e870fbd20a503ee6c2d3c19a34d7267a8639db7663427e764f030fa785f

Contents?: true

Size: 585 Bytes

Versions: 23

Compression:

Stored size: 585 Bytes

Contents

# frozen_string_literal: true

##
# A simple extension of the Proc class that supports setting a custom binding
# and evaluates everything in the Proc using the new binding.

class ProcWithBinding < Proc
  ##
  # Set the binding for this instance

  def apply_binding(bind, *args)
    @binding = bind
    instance_exec(*args, &self)
  end

  def method_missing(method, *args)
    begin
      method_from_binding = eval("method(#{method.inspect})", @binding)
      return method_from_binding.call(*args)
    rescue NameError
      # fall through on purpose
    end

    super
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
vagrant-libvirt-0.12.2 spec/support/binding_proc.rb
vagrant-libvirt-0.12.1 spec/support/binding_proc.rb
vagrant-libvirt-0.12.0 spec/support/binding_proc.rb
vagrant-libvirt-0.11.2 spec/support/binding_proc.rb
vagrant-libvirt-0.11.1 spec/support/binding_proc.rb
vagrant-libvirt-0.10.8 spec/support/binding_proc.rb
vagrant-libvirt-0.10.7 spec/support/binding_proc.rb
vagrant-libvirt-0.10.6 spec/support/binding_proc.rb
vagrant-libvirt-0.10.5 spec/support/binding_proc.rb
vagrant-libvirt-0.10.4 spec/support/binding_proc.rb
vagrant-libvirt-0.10.3 spec/support/binding_proc.rb
vagrant-libvirt-0.10.2 spec/support/binding_proc.rb
vagrant-libvirt-0.10.1 spec/support/binding_proc.rb
vagrant-libvirt-0.10.0 spec/support/binding_proc.rb
vagrant-libvirt-0.9.0 spec/support/binding_proc.rb
vagrant-libvirt-0.8.2 spec/support/binding_proc.rb
vagrant-libvirt-0.8.1 spec/support/binding_proc.rb
vagrant-libvirt-0.8.0 spec/support/binding_proc.rb
vagrant-libvirt-0.7.0 spec/support/binding_proc.rb
vagrant-libvirt-0.6.3 spec/support/binding_proc.rb