lib/memoist.rb in memoist-0.1.0 vs lib/memoist.rb in memoist-0.2.0
- old
+ new
@@ -21,39 +21,44 @@
memoize_all unless frozen?
freeze_without_memoizable
end
def memoize_all
- prime_cache ".*"
+ prime_cache
end
def unmemoize_all
- flush_cache ".*"
+ flush_cache
end
def prime_cache(*syms)
+ if syms.empty?
+ syms = methods.collect do |m|
+ m[12..-1] if m.to_s.start_with?("_unmemoized_")
+ end.compact
+ end
+
syms.each do |sym|
- methods.each do |m|
- if m.to_s =~ /^_unmemoized_(#{sym})/
- if method(m).arity == 0
- __send__($1)
- else
- ivar = Memoist.memoized_ivar_for($1)
- instance_variable_set(ivar, {})
- end
- end
+ m = method(:"_unmemoized_#{sym}") rescue next
+ if m.arity == 0
+ __send__(sym)
+ else
+ ivar = Memoist.memoized_ivar_for(sym)
+ instance_variable_set(ivar, {})
end
end
end
def flush_cache(*syms)
+ if syms.empty?
+ syms = (methods + private_methods + protected_methods).collect do |m|
+ m[12..-1] if m.to_s.start_with?("_unmemoized_")
+ end.compact
+ end
+
syms.each do |sym|
- (methods + private_methods + protected_methods).each do |m|
- if m.to_s =~ /^_unmemoized_(#{sym.to_s.gsub(/\?\Z/, '\?')})/
- ivar = Memoist.memoized_ivar_for($1)
- instance_variable_get(ivar).clear if instance_variable_defined?(ivar)
- end
- end
+ ivar = Memoist.memoized_ivar_for(sym)
+ instance_variable_get(ivar).clear if instance_variable_defined?(ivar)
end
end
end
def memoize(*symbols)