Sha256: 63b4cf7d2896f3d52e0c6e082725bc6f27058278008abec7b621f320ab553670

Contents?: true

Size: 866 Bytes

Versions: 4

Compression:

Stored size: 866 Bytes

Contents

# frozen_string_literal: true

require "openapi3_parser/node_factory/object"

module Openapi3Parser
  module NodeFactory
    class Discriminator < NodeFactory::Object
      field "propertyName", input_type: String, required: true
      field "mapping", input_type: Hash,
                       validate: :validate_mapping,
                       default: -> { {}.freeze }

      private

      def build_object(data, context)
        Node::Discriminator.new(data, context)
      end

      def validate_mapping(validatable)
        input = validatable.input
        return if input.empty?
        string_keys = input.keys.map(&:class).uniq == [String]
        string_values = input.values.map(&:class).uniq == [String]
        return if string_keys && string_values
        validatable.add_error("Expected string keys and string values")
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
openapi3_parser-0.7.0 lib/openapi3_parser/node_factory/discriminator.rb
openapi3_parser-0.6.1 lib/openapi3_parser/node_factory/discriminator.rb
openapi3_parser-0.6.0 lib/openapi3_parser/node_factory/discriminator.rb
openapi3_parser-0.5.2 lib/openapi3_parser/node_factory/discriminator.rb