module Memoist2::ClassMethods
Public Instance Methods
memoize(*method_names)
click to toggle source
# File lib/memoist2.rb, line 11 def memoize(*method_names) method_names.each do |method_name| memoized_ivar = Memoist2.memoized_ivar_for(method_name) memoized_module = Module.new do module_eval <<-EVAL def #{method_name} unless #{memoized_ivar} #{memoized_ivar} = [super] end #{memoized_ivar}[0] end def self.to_s "Memoist2::MemoizedMethod(#{method_name})" end def self.inspect; to_s; end EVAL end prepend memoized_module end end
memoize_class_method(*method_names)
click to toggle source
# File lib/memoist2.rb, line 33 def memoize_class_method(*method_names) singleton_class.class_eval do include Memoist2 unless ancestors.include?(Memoist2) memoize *method_names end end