Module: Memoist2
- Defined in:
- lib/memoist2.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.memoized_ivar_for(symbol) ⇒ Object
3 4 5 |
# File 'lib/memoist2.rb', line 3 def self.memoized_ivar_for(symbol) "@_memoized_#{symbol.to_s.sub(/\?\Z/, '_query').sub(/!\Z/, '_bang')}".to_sym end |
Instance Method Details
#memoize(method_name) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/memoist2.rb', line 7 def memoize(method_name) memoized_ivar = Memoist2.memoized_ivar_for(method_name) memoized_module = Module.new do module_eval <<-EVAL def #{method_name} if !defined?(#{memoized_ivar}) || #{memoized_ivar}.empty? #{memoized_ivar} = [super] end #{memoized_ivar}[0] end EVAL end prepend memoized_module end |