module Unparser::Adamantium::ModuleMethods

Methods mixed in to adamantium modules

Public Instance Methods

memoize(*methods) click to toggle source

Memoize a list of methods

@param [Array<#to_s>] methods

a list of methods to memoize

@return [self]

@api public

# File lib/unparser/adamantium.rb, line 94
def memoize(*methods)
  methods.each(&method(:memoize_method))
  self
end
memoized?(method_name) click to toggle source

Test if method is memoized

@param [Symbol] name

@return [Bool]

# File lib/unparser/adamantium.rb, line 104
def memoized?(method_name)
  memoized_methods.key?(method_name)
end
unmemoized_instance_method(method_name) click to toggle source

Return unmemoized instance method

@param [Symbol] name

@return [UnboundMethod]

the memoized method

@raise [NameError]

raised if the method is unknown

@api public

# File lib/unparser/adamantium.rb, line 119
def unmemoized_instance_method(method_name)
  memoized_methods.fetch(method_name) do
    fail ArgumentError, "##{method_name} is not memoized"
  end
end

Private Instance Methods

memoize_method(method_name) click to toggle source
# File lib/unparser/adamantium.rb, line 127
def memoize_method(method_name)
  if memoized_methods.key?(method_name)
    fail ArgumentError, "##{method_name} is already memoized"
  end

  memoized_methods[method_name] = MethodBuilder.new(self, method_name).call
end
memoized_methods() click to toggle source
# File lib/unparser/adamantium.rb, line 135
def memoized_methods
  @memoized_methods ||= {}
end