Method: Functional::ProtocolInfo#initialize

Defined in:
lib/functional/protocol_info.rb

#initialize(name) { ... } ⇒ Functional::ProtocolInfo

Process a protocol specification block and build a new object.

Parameters:

  • name (Symbol)

    the symbolic name of the protocol

Yields:

  • self to the given specification block

Raises:

  • (ArgumentError)

    when name is nil or an empty string

  • (ArgumentError)

    when no block given



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/functional/protocol_info.rb', line 22

def initialize(name, &specification)
  raise ArgumentError.new('no block given') unless block_given?
  raise ArgumentError.new('no name given') if name.nil? || name.empty?
  super
  @name = name.to_sym
  @info = Info.new({}, {}, [])
  self.instance_eval(&specification)
  @info.each_pair{|col, _| col.freeze}
  @info.freeze
  ensure_ivar_visibility!
  self.freeze
end