class Validate::AST::Rules::Negative

Public Class Methods

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

Public Instance Methods

inspect() click to toggle source
# File lib/validate/ast.rb, line 373
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 363
def message
  return "not [#{constraint_message(0)}]" if @constraints.one?

  'neither ' + @constraints
               .size
               .times
               .map { |i| "[#{constraint_message(i)}]" }
               .join(', nor ')
end
name() click to toggle source
# File lib/validate/ast.rb, line 359
def name
  'neither_' + @constraints.map(&:name).sort.join('_nor_')
end
valid?(value, _ = Constraints::ValidationContext.none) click to toggle source
# File lib/validate/ast.rb, line 351
def valid?(value, _ = Constraints::ValidationContext.none)
  ctx = Constraints::ValidationContext.root(value)
  @constraints.none? do |c|
    ctx.clear_violations
    c.valid?(value, ctx) && !ctx.has_violations?
  end
end