Module: Memoizable

Extended by:
Decoratable
Defined in:
lib/decoratable/memoizable.rb

Constant Summary collapse

MEMOIZABLE_CACHE_KEY =
:"@memoizable_cache"

Instance Method Summary collapse

Methods included from Decoratable

extended

Instance Method Details

#memoizableObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/decoratable/memoizable.rb', line 8

def memoizable
  if instance_variable_defined?(MEMOIZABLE_CACHE_KEY)
    cache = instance_variable_get(MEMOIZABLE_CACHE_KEY)
  else
    cache = instance_variable_set(MEMOIZABLE_CACHE_KEY, Hash.new)
  end

  key = __decorated_method__.name.to_sym

  if cache.has_key?(key)
    cache[key]
  else
    cache[key] = yield
  end
end