module AIXM::Memoize::ClassMethods

Public Instance Methods

memoize(method) click to toggle source
   # File lib/aixm/memoize.rb
52 def memoize(method)
53   unmemoized_method = :"unmemoized_#{method}"
54   alias_method unmemoized_method, method
55   define_method method do |*args, **kargs, &block|
56     if block || !AIXM::Memoize.cache
57       send(unmemoized_method, *args, **kargs, &block)
58     else
59       id = object_id.hash ^ args.hash ^ kargs.hash
60       if AIXM::Memoize.cache.has_key?(id)
61         AIXM::Memoize.cache[id]
62       else
63         AIXM::Memoize.cache[id] = send(unmemoized_method, *args, **kargs, &block)
64       end
65     end
66   end
67 end