Sha256: 4811bcbdf72a08311049e480e8337f45ddda0e6e4ea1a65ed3b8e0281aeee3fd

Contents?: true

Size: 1.04 KB

Versions: 11

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module OpenApi
  module DSL
    # https://swagger.io/docs/specification/data-models/oneof-anyof-allof-not/
    # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#schemaObject
    class CombinedSchema < Hash
      include Helpers

      attr_accessor :processed, :mode, :schemas

      def initialize(combined_schema)
        combined_schema.delete_if { |_, v| v.nil? }
        self.mode = combined_schema.keys.first.to_s.camelize(:lower).to_sym
        self.schemas = combined_schema.values.first
      end

      def process
        self.processed = {
            mode =>
                schemas.map do |schema|
                  type = schema.is_a?(Hash) ? schema[:type] : schema
                  schema = { } unless schema.is_a?(Hash)
                  SchemaObj.new(type, schema).process
                end
        }
      end
    end
  end
end

__END__

Inside schema:

"oneOf": [
  {
    "$ref": "#components/schemas/DogSchema"
  },
  {
    "type": "string"
  },
  {
    "type": "integer"
  }
]

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
zero-rails_openapi-2.2.0 lib/oas_objs/combined_schema.rb
zero-rails_openapi-2.1.5 lib/oas_objs/combined_schema.rb
zero-rails_openapi-2.1.4 lib/oas_objs/combined_schema.rb
zero-rails_openapi-2.1.3 lib/oas_objs/combined_schema.rb
zero-rails_openapi-2.1.2 lib/oas_objs/combined_schema.rb
zero-rails_openapi-2.1.1 lib/oas_objs/combined_schema.rb
zero-rails_openapi-2.1.0 lib/oas_objs/combined_schema.rb
zero-rails_openapi-2.0.3 lib/oas_objs/combined_schema.rb
zero-rails_openapi-2.0.2 lib/oas_objs/combined_schema.rb
zero-rails_openapi-2.0.1 lib/oas_objs/combined_schema.rb
zero-rails_openapi-2.0.0 lib/oas_objs/combined_schema.rb