module Lite::Memoize::Table

Public Instance Methods

memoize(method_name, args: nil, reload: false) { || ... } click to toggle source
# File lib/lite/memoize/table.rb, line 11
def memoize(method_name, args: nil, reload: false)
  key = "#{method_name}:#{args}"

  if reload
    store[key] = yield
  else
    store[key] ||= yield
  end
end
store() click to toggle source
# File lib/lite/memoize/table.rb, line 7
def store
  @_memoized_methods ||= {}
end

Private Instance Methods

caller_key(block, as: nil) click to toggle source
# File lib/lite/memoize/table.rb, line 23
def caller_key(block, as: nil)
  name = as ? [as] : block.source_location
  return name.concat(block) if block.is_a?(Array)

  block.binding.local_variables.each_with_object(name) do |local_name, array|
    array << local_name
    array << block.binding.local_variable_get(local_name)
  end
end