Module: Memoize::ClassMethods

Defined in:
lib/dpl/helper/memoize.rb

Instance Method Summary collapse

Instance Method Details

#memoize(name) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/dpl/helper/memoize.rb', line 5

def memoize(name)
  ivar = :"@#{name.to_s.sub('?', '_predicate')}"
  prepend Module.new {
    define_method(name) do |*args|
      raise ArgsError.new('cannot pass arguments to memoized method %p' % name) unless args.empty?
      return instance_variable_get(ivar) if instance_variable_defined?(ivar)
      instance_variable_set(ivar, super())
    end
  }
end