Sha256: 0bce1f2a0c4b675b4937e4599cf12a7ce2bec28ada83cade011b33978c4f3d72
Contents?: true
Size: 712 Bytes
Versions: 1
Compression:
Stored size: 712 Bytes
Contents
# frozen_string_literal: true module Lite module Memoize module Mixin def store @_memoized_methods ||= {} end 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 def memoize(method_name, args: nil, reload: false) key = "#{method_name}:#{args}" if reload store[key] = yield else store[key] ||= yield end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lite-memoize-1.0.1 | lib/lite/memoize/mixin.rb |