Module: Code0::ZeroTrack::Memoize
- Defined in:
- lib/code0/zero_track/memoize.rb
Instance Method Summary collapse
- #clear_memoize(name) ⇒ Object
- #clear_memoize!(name) ⇒ Object
- #memoize(name, reset_on_change: nil) ⇒ Object
- #memoized?(name) ⇒ Boolean
Instance Method Details
#clear_memoize(name) ⇒ Object
28 29 30 |
# File 'lib/code0/zero_track/memoize.rb', line 28 def clear_memoize(name) clear_memoize!(name) if memoized?(name) end |
#clear_memoize!(name) ⇒ Object
32 33 34 |
# File 'lib/code0/zero_track/memoize.rb', line 32 def clear_memoize!(name) remove_instance_variable(ivar(name)) end |
#memoize(name, reset_on_change: nil) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/code0/zero_track/memoize.rb', line 6 def memoize(name, reset_on_change: nil) unless reset_on_change.nil? reset_trigger = reset_on_change.call reset_memoize = memoize("#{name}_reset_on_change") { reset_trigger } if reset_trigger != reset_memoize clear_memoize(name) clear_memoize("#{name}_reset_on_change") end end if memoized?(name) instance_variable_get(ivar(name)) else instance_variable_set(ivar(name), yield) end end |
#memoized?(name) ⇒ Boolean
24 25 26 |
# File 'lib/code0/zero_track/memoize.rb', line 24 def memoized?(name) instance_variable_defined?(ivar(name)) end |