module Dry::Schema::Message::Or

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 right.is_a?(Array)
    if left.is_a?(Array) && paths.uniq.size > 1
      MultiPath.new(left, right)
    else
      right
    end
  else
    msgs.max
  end
end