Sha256: 49b8b1a1bc07653911f36b303bba1879e8c4eb7ae935e7aa7a84739f041c590d

Contents?: true

Size: 1.3 KB

Versions: 2

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

module Openapi3Parser
  module NodeFactory
    module ParameterLike
      def default_explode
        context.input["style"] == "form"
      end

      def schema_factory(context)
        factory = NodeFactory::OptionalReference.new(NodeFactory::Schema)
        factory.call(context)
      end

      def examples_factory(context)
        factory = NodeFactory::OptionalReference.new(NodeFactory::Schema)
        NodeFactory::Map.new(context,
                             default: nil,
                             value_factory: factory)
      end

      def content_factory(context)
        NodeFactory::Map.new(context,
                             default: nil,
                             value_factory: NodeFactory::MediaType,
                             validate: method(:validate_content))
      end

      def validate_content(validatable)
        return if validatable.input.size == 1
        validatable.add_error("Must only have one item")
      end
    end
  end
end

# These are in the footer as a cyclic dependency can stop this module loading
require "openapi3_parser/node_factory/optional_reference"
require "openapi3_parser/node_factory/map"
require "openapi3_parser/node_factory/schema"
require "openapi3_parser/node_factory/example"
require "openapi3_parser/node_factory/media_type"

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
openapi3_parser-0.5.1 lib/openapi3_parser/node_factory/parameter_like.rb
openapi3_parser-0.5.0 lib/openapi3_parser/node_factory/parameter_like.rb