Module: Code0::ZeroTrack::Memoize

Defined in:
lib/code0/zero_track/memoize.rb

Instance Method Summary collapse

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

Returns:

  • (Boolean)


24
25
26
# File 'lib/code0/zero_track/memoize.rb', line 24

def memoized?(name)
  instance_variable_defined?(ivar(name))
end