class Validate::AST::Rules::Affirmative

Public Class Methods

new(constraints) click to toggle source
# File lib/validate/ast.rb, line 306
def initialize(constraints)
  @constraints = constraints.freeze
end

Public Instance Methods

inspect() click to toggle source
# File lib/validate/ast.rb, line 322
def inspect
  return @constraints.first.inspect if @constraints.one?

  "(#{@constraints.map(&:inspect).join(' | ')})"
end
message() click to toggle source
# File lib/validate/ast.rb, line 328
def message
  'either ' + @constraints
              .size
              .times
              .map { |i| "[#{constraint_message(i)}]" }
              .join(', or ')
end
name() click to toggle source
# File lib/validate/ast.rb, line 318
def name
  'either_' + @constraints.map(&:name).sort.join('_or_')
end
valid?(value, _ = Constraints::ValidationContext.none) click to toggle source
# File lib/validate/ast.rb, line 310
def valid?(value, _ = Constraints::ValidationContext.none)
  ctx = Constraints::ValidationContext.root(value)
  @constraints.any? do |c|
    ctx.clear_violations
    c.valid?(value, ctx) && !ctx.has_violations?
  end
end