class Definition::Types::Or::Conformer
Attributes
definition[RW]
Public Class Methods
new(definition)
click to toggle source
# File lib/definition/types/or.rb, line 27 def initialize(definition) self.definition = definition end
Public Instance Methods
conform(value)
click to toggle source
# File lib/definition/types/or.rb, line 31 def conform(value) result = first_successful_conform_or_errors(value) if result.is_a?(ConformResult) result else error = ConformError.new(definition, "None of the definitions are valid for '#{definition.name}'", sub_errors: result) ConformResult.new(value, errors: [error]) end end
Private Instance Methods
first_successful_conform_or_errors(value)
click to toggle source
# File lib/definition/types/or.rb, line 45 def first_successful_conform_or_errors(value) errors = [] definition.definitions.each do |definition| result = definition.conform(value) return result if result.passed? errors.push(result.error_tree) end errors.flatten end