class Procto

Constants

DEFAULT_NAME

The default name of the instance method to be called

VERSION

Gem version

Public Class Methods

call(name = DEFAULT_NAME) click to toggle source

Return a module that turns the host into a method object

@example without a name

class Greeter
  include Procto.call

  def initialize(text)
    @text = text
  end

  def call
    "Hello #{text}"
  end
end

Greeter.call('world') # => "Hello world"

@example with a name

class Printer
  include Procto.call(:print)

  def initialize(text)
    @text = text
  end

  def print
    "Hello #{text}"
  end
end

Printer.call('world') # => "Hello world"

@param [#to_sym] name

the name of the instance method to call

@return [Procto]

@api public

# File lib/procto.rb, line 49
def self.call(name = DEFAULT_NAME)
  new(name.to_sym)
end
new(name) click to toggle source

Initialize a new instance

@param [Symbol] name

the name of the instance method to call

@return [undefined]

@api private

# File lib/procto.rb, line 61
def initialize(name)
  @block = ->(*args) { new(*args).public_send(name) }
end

Private Instance Methods

included(host) click to toggle source

Define the .call method on host

@param [Object] host

the hosting object

@return [undefined]

@api private

# File lib/procto.rb, line 75
def included(host)
  host.instance_exec(@block) do |block|
    define_singleton_method(:call, &block)
  end

  host.extend(ClassMethods)
end