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