Sha256: 61185aa1f126e9385b691eb94c35663632ea306b4aace156e170c8e22814cb26

Contents?: true

Size: 868 Bytes

Versions: 8

Compression:

Stored size: 868 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

8 entries across 8 versions & 2 rubygems

Version Path
openapi3_parser-0.10.1 lib/openapi3_parser/node_factory/discriminator.rb
openapi3_parser-0.9.2 lib/openapi3_parser/node_factory/discriminator.rb
mountapi-0.11.1 vendor/bundle/ruby/2.7.0/gems/openapi3_parser-0.9.1/lib/openapi3_parser/node_factory/discriminator.rb
openapi3_parser-0.9.1 lib/openapi3_parser/node_factory/discriminator.rb
openapi3_parser-0.9.0 lib/openapi3_parser/node_factory/discriminator.rb
openapi3_parser-0.8.2 lib/openapi3_parser/node_factory/discriminator.rb
openapi3_parser-0.8.1 lib/openapi3_parser/node_factory/discriminator.rb
openapi3_parser-0.8.0 lib/openapi3_parser/node_factory/discriminator.rb