Module: Memoist::InstanceMethods

Defined in:
lib/memoist.rb

Instance Method Summary collapse

Instance Method Details

#flush_cache(*method_names) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/memoist.rb', line 69

def flush_cache(*method_names)
  if method_names.empty?
    prefix = Memoist.unmemoized_prefix+"_"
    method_names = (methods + private_methods + protected_methods).collect do |method_name|
      if method_name.to_s.start_with?(prefix)
        method_name[prefix.length..-1]
      end
    end.compact
  end

  method_names.each do |method_name|
    ivar = Memoist.memoized_ivar_for(method_name)
    remove_instance_variable(ivar) if instance_variable_defined?(ivar)
  end
end

#memoize_allObject



41
42
43
# File 'lib/memoist.rb', line 41

def memoize_all
  prime_cache
end

#prime_cache(*method_names) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/memoist.rb', line 49

def prime_cache(*method_names)
  if method_names.empty?
    prefix = Memoist.unmemoized_prefix+"_"
    method_names = methods.collect do |method_name|
      if method_name.to_s.start_with?(prefix)
        method_name[prefix.length..-1]
      end
    end.compact
  end

  method_names.each do |method_name|
    if method(Memoist.unmemoized_method_for(method_name)).arity == 0
      __send__(method_name)
    else
      ivar = Memoist.memoized_ivar_for(method_name)
      instance_variable_set(ivar, {})
    end
  end
end

#unmemoize_allObject



45
46
47
# File 'lib/memoist.rb', line 45

def unmemoize_all
  flush_cache
end