module Dry::Schema::Message::Or

Hints extension for Or messages

@see Message::Or

@api public

Public Class Methods

[](left, right, messages) click to toggle source

@api private

# File lib/dry/schema/message/or.rb, line 14
def self.[](left, right, messages)
  msgs = [left, right].flatten
  paths = msgs.map(&:path)

  if paths.uniq.size == 1
    SinglePath.new(left, right, messages)
  elsif MultiPath.handler(right)
    if MultiPath.handler(left) && paths.uniq.size > 1
      MultiPath.new(left, right)
    else
      right
    end
  else
    msgs.max
  end
end