module Lemo::MemoedMethods
Public Instance Methods
_clear_memos( *requested_meths )
click to toggle source
Reset some or all memoized variables. Return cleared value(s) Has to do quite a lot of meta-work, so don't put this in fast-path code.
# File lib/lemo/memoed_methods.rb, line 23 def _clear_memos( *requested_meths ) # construct set of memoed methods to clear requested_meths = if requested_meths.empty? _memoed_methods.keys else # only clear ivars that actually make sense _memoed_methods.keys & requested_meths end # clear set of memos and keep their values memoed_values = requested_meths.map do |meth| if instance_variable_defined?( ivar = _memoed_methods[meth].owner.ivar_from(meth) ) remove_instance_variable(ivar) end end # return nil, the first value, or all values (0..1) === memoed_values.size ? memoed_values.first : memoed_values end
_memoed_methods()
click to toggle source
the set of methods memoed so far that we know about.
# File lib/lemo/memoed_methods.rb, line 6 def _memoed_methods methods = {} if self.class.respond_to?(:memoed_methods) methods.merge! self.class.memoed_methods end if singleton_methods.size > 0 && singleton_class.respond_to?(:memoed_methods) methods.merge! singleton_class.memoed_methods end methods end