Sha256: 88a7e5a985aa0b9fe5cfdeaf904922c3752f9e90ea483410fc1117817dbb3351

Contents?: true

Size: 872 Bytes

Versions: 1

Compression:

Stored size: 872 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)
      memoized_method_cache.set(data)
      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

1 entries across 1 versions & 1 rubygems

Version Path
memoizable-0.3.0 lib/memoizable/instance_methods.rb