module SimpleMemoizer::ClassMethods
Public Instance Methods
memoize(*method_names)
click to toggle source
# File lib/simple_memoizer.rb, line 5 def memoize(*method_names) method_names.flatten! memoized_module = Module.new do method_names.each do |name| memoized_ivar = SimpleMemoizer.memoized_ivar_for(name) module_eval <<-EVAL def #{name} unless #{memoized_ivar} #{memoized_ivar} = [super] end #{memoized_ivar}[0] end def #{name}=(value) #{memoized_ivar} = [value] end EVAL end end prepend memoized_module end