class Definition::Types::And::Conformer
Attributes
definition[RW]
Public Class Methods
new(definition)
click to toggle source
# File lib/definition/types/and.rb, line 27 def initialize(definition) self.definition = definition end
Public Instance Methods
conform(value)
click to toggle source
# File lib/definition/types/and.rb, line 31 def conform(value) results = conform_all(value) if results.all?(&:conformed?) ConformResult.new(results.last.value) else ConformResult.new(value, errors: [ ConformError.new(definition, "Not all definitions are valid for '#{definition.name}'", sub_errors: results.map(&:error_tree).flatten) ]) end end
Private Instance Methods
conform_all(value)
click to toggle source
# File lib/definition/types/and.rb, line 48 def conform_all(value) results = [] definition.definitions.each do |definition| result = definition.conform(value) value = result.value results << result break unless result.passed? end results end