Class: Dry::Initializer::Signature

Inherits:
Object
  • Object
show all
Includes:
Errors, Enumerable
Defined in:
lib/dry/initializer/signature.rb

Overview

Immutable container for chunks of code describing argument signatures. Responcible for building the resulting signature for the initializer args.

Instance Method Summary collapse

Constructor Details

#initialize(*list) ⇒ Signature

Returns a new instance of Signature.



8
9
10
# File 'lib/dry/initializer/signature.rb', line 8

def initialize(*list)
  @list = list
end

Instance Method Details

#add(*args) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/dry/initializer/signature.rb', line 12

def add(*args)
  signature = Plugins::Signature.new(*args)

  validate_order_of signature
  validate_param_uniqueness_of signature
  validate_option_uniqueness_of signature
  validate_attribute_uniqueness_of signature

  self.class.new(*@list, signature)
end

#callObject



27
28
29
# File 'lib/dry/initializer/signature.rb', line 27

def call
  (select(&:param?).map(&:call) + %w(**__options__)).compact.join(", ")
end

#eachObject



23
24
25
# File 'lib/dry/initializer/signature.rb', line 23

def each
  @list.each { |item| yield item }
end