Sha256: 6de46a3c491df04724152ad3fe9c71205f1ed3b2ed31540aa0ece87fa0638ad9
Contents?: true
Size: 1.54 KB
Versions: 3
Compression:
Stored size: 1.54 KB
Contents
module Dry::Initializer # Immutable container for chunks of code describing argument signatures. # Responcible for building the resulting signature for the initializer args. class Signature include Enumerable include Errors def initialize(*list) @list = list end 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 def each @list.each { |item| yield item } end def call (select(&:param?).map(&:call) + %w(**__options__)).compact.join(", ") end private def validate_param_uniqueness_of(signature) return unless signature.param? return unless select(&:param?).map(&:name).include? signature.name fail RedefinitionError.new(signature.name) end def validate_option_uniqueness_of(signature) return if signature.param? return unless reject(&:param?).map(&:name).include? signature.name fail RedefinitionError.new(signature.name) end def validate_attribute_uniqueness_of(signature) return unless map(&:rename).include? signature.rename fail RedefinitionError.new(signature.name) end def validate_order_of(signature) return unless signature.required? && signature.param? return unless reject(&:required?).any?(&:param?) fail OrderError.new(signature.name) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-initializer-0.10.0 | lib/dry/initializer/signature.rb |
dry-initializer-0.9.3 | lib/dry/initializer/signature.rb |
dry-initializer-0.9.2 | lib/dry/initializer/signature.rb |