Sha256: 1f316384ef8c2b0eb2f3a7d161f046cce4dae3e8617eff072ad15f783cd61fc1

Contents?: true

Size: 499 Bytes

Versions: 5

Compression:

Stored size: 499 Bytes

Contents


class Preq

  def initialize( obj, &blk )
    @obj = obj
    @cache = {}
    instance_eval &blk
  end

  def method_missing( meth, *args, &blk )
    (class << self; self; end).instance_eval {
      define_method( meth ) do
        @cache[meth] ||= @obj.send( meth, *args, &blk )
      end
    }
    send( meth, *args, &blk )
  end

end


class X
  def initialize ; @n = 0 ; end
  def y ; @n += 1 ; end
  def s ; @n ; end
  def z ; y ; end
end

x = X.new

Preq.new(x) do
  y ; y ; z ; y
end

p x.s

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
facets-1.4.2 forge/more/prereq.rb
facets-1.4.1 forge/more/prereq.rb
facets-1.4.3 forge/more/prereq.rb
facets-1.4.4 forge/more/prereq.rb
facets-1.4.5 snip/more/prereq.rb