class DomainModel::Validator::Collection

Attributes

values[R]

Public Class Methods

new(field, values) click to toggle source
# File lib/domain_model.rb, line 310
def initialize(field, values)
  @field, @values = field, values
end

Public Instance Methods

errors() click to toggle source
# File lib/domain_model.rb, line 314
def errors
  case
  when (not enumerable?)
    ["was declared as a collection and is not enumerable"]
  when type_mismatch?
    ["contains a value that is not an instance of #{types.map(&:inspect).join(' or ')}"]
  when transitively_invalid?
    ["is invalid"]
  else
    []
  end
end

Private Instance Methods

enumerable?() click to toggle source
# File lib/domain_model.rb, line 331
def enumerable?
  values.is_a?(Enumerable)
end
transitively_invalid?() click to toggle source
# File lib/domain_model.rb, line 341
def transitively_invalid?
  field.validate? and values.any? { |v| not v.valid? }
end
type_mismatch?() click to toggle source
# File lib/domain_model.rb, line 335
def type_mismatch?
  values.any? do |value|
    field.types.none? { |t| value.is_a?(t) }
  end
end