class Openapi3Parser::NodeFactory::Field::ValidNodeBuilder
Attributes
factory[R]
validatable[R]
Public Class Methods
data(factory)
click to toggle source
# File lib/openapi3_parser/node_factory/field.rb, line 62 def self.data(factory) new(factory).data end
errors(factory)
click to toggle source
# File lib/openapi3_parser/node_factory/field.rb, line 58 def self.errors(factory) new(factory).errors end
Private Class Methods
new(factory)
click to toggle source
# File lib/openapi3_parser/node_factory/field.rb, line 66 def initialize(factory) @factory = factory @validatable = Validation::Validatable.new(factory) end
Public Instance Methods
data()
click to toggle source
# File lib/openapi3_parser/node_factory/field.rb, line 81 def data return default_value if factory.nil_input? TypeChecker.raise_on_invalid_type(factory.context, type: factory.input_type) validate(raise_on_invalid: true) factory.data end
errors()
click to toggle source
# File lib/openapi3_parser/node_factory/field.rb, line 71 def errors return validatable.collection if factory.nil_input? TypeChecker.validate_type(validatable, type: factory.input_type) return validatable.collection if validatable.errors.any? validate(raise_on_invalid: false) validatable.collection end
Private Instance Methods
default_value()
click to toggle source
# File lib/openapi3_parser/node_factory/field.rb, line 96 def default_value if factory.nil_input? && factory.default.nil? nil else factory.data end end
run_validation()
click to toggle source
# File lib/openapi3_parser/node_factory/field.rb, line 115 def run_validation if factory.validation.is_a?(Symbol) factory.send(factory.validation, validatable) else factory.validation&.call(validatable) end end
validate(raise_on_invalid: false)
click to toggle source
# File lib/openapi3_parser/node_factory/field.rb, line 104 def validate(raise_on_invalid: false) run_validation return if !raise_on_invalid || validatable.errors.empty? first_error = validatable.errors.first raise Openapi3Parser::Error::InvalidData, "Invalid data for #{first_error.context.location_summary}: "\ "#{first_error.message}" end