Sha256: 01a86d74e2a721af559db6de4205f02e7a5623d9d4f1c3f5d272a80b453a3ff6

Contents?: true

Size: 507 Bytes

Versions: 2

Compression:

Stored size: 507 Bytes

Contents

module MonkeySupport
  module Memoizable
    # This is faster than AS::Memoizeable.
    # Less featureful, however.
    def monkey_memoize(*methods)
      methods.each do |method|
        class_eval <<EOS

@__#{method} = {}
alias_method :__#{method}, :#{method}

if method(:#{method}).arity == 1
          
  def #{method}(arg)
    @__#{method}[arg] ||= __#{method}(arg)
  end
  
else
  
  def #{method}(*args)
    @__#{method}[args] ||= __#{method}(*args)
  end
  
end

EOS
  
      end
    end
  end
end 

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
burke-monkeysupport-0.0.7 lib/monkeysupport/memoizable.rb
burke-monkeysupport-0.1.1 lib/monkeysupport/memoizable.rb