module Invokable::Core

The core methods that are mixed into classes at a class and instance level when they include {Invokable}.

@note This module should not be used directly.

Public Instance Methods

===(obj) click to toggle source

Call invokable with one argument, allows invocables to be used in case statements and Enumerable#grep.

@version 0.7.0

# File lib/invokable/core.rb, line 61
def ===(obj)
  call(obj)
end
[](*args) click to toggle source

For Proc compatibility, forwards it's arguments to “call”.

@version 0.7.0

# File lib/invokable/core.rb, line 53
def [](*args)
  call(*args)
end
arity() click to toggle source

Return the arity (i.e. the number of arguments) of the “call” method.

@version 0.5.0

@return [Integer]

# File lib/invokable/core.rb, line 46
def arity
  method(:call).arity
end
curry(arity = nil) click to toggle source

Return a curried proc. If the optional arity argument is given, it determines the number of arguments. A curried proc receives some arguments. If a sufficient number of arguments are supplied, it passes the supplied arguments to the original proc and returns the result. Otherwise, returns another curried proc that takes the rest of arguments.

@param arity [Integer] @return [Proc]

# File lib/invokable/core.rb, line 27
def curry(arity = nil)
  to_proc.curry(arity)
end
memoize() click to toggle source

Return a memoized proc, that is, a proc that caches it's return values by it's arguments.

@return [Proc]

# File lib/invokable/core.rb, line 34
def memoize
  lambda do |*args|
    @memo ||= {}
    @memo[args.hash] ||= call(*args)
  end
end
to_proc() click to toggle source

Return a Proc that forwards it's arguments along to call.

@return [Proc]

# File lib/invokable/core.rb, line 14
def to_proc
  lambda do |*args|
    call(*args)
  end
end