Sha256: 2385ee974386dca12a191da08ce500fb0c6f00b66bfa2c9399cd52b12486c6e7

Contents?: true

Size: 904 Bytes

Versions: 4

Compression:

Stored size: 904 Bytes

Contents

# encoding: utf-8

module Memoizable

  # Methods mixed in to memoizable instances
  module InstanceMethods

    # Freeze the object
    #
    # @example
    #   object.freeze  # object is now frozen
    #
    # @return [Object]
    #
    # @api public
    def freeze
      memoized_method_cache  # initialize method cache
      super
    end

    # Sets a memoized value for a method
    #
    # @example
    #   object.memoize(hash: 12345)
    #
    # @param [Hash{Symbol => Object}] data
    #   the data to memoize
    #
    # @return [self]
    #
    # @api public
    def memoize(data)
      data.each { |name, value| memoized_method_cache[name] = value }
      self
    end

  private

    # The memoized method results
    #
    # @return [Hash]
    #
    # @api private
    def memoized_method_cache
      @_memoized_method_cache ||= Memory.new
    end

  end # InstanceMethods
end # Memoizable

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
memoizable-0.4.2 lib/memoizable/instance_methods.rb
memoizable-0.4.1 lib/memoizable/instance_methods.rb
memoizable-0.4.0 lib/memoizable/instance_methods.rb
memoizable-0.3.1 lib/memoizable/instance_methods.rb