# File lib/nanoc/base/memoization.rb, line 43 def memoize(method_name) # Alias original_method_name = '__nonmemoized_' + method_name.to_s alias_method original_method_name, method_name # Redefine define_method(method_name) do |*args| # Get cache @__memoization_cache ||= {} @__memoization_cache[method_name] ||= {} # Recalculate if necessary if !@__memoization_cache[method_name].has_key?(args) result = send(original_method_name, *args) @__memoization_cache[method_name][args] = result end # Done @__memoization_cache[method_name][args] end end