Sha256: f9ab775043f25b04899c90c9d21bc883ff19bff8f2bfc85c6cbd4eafae7013fa

Contents?: true

Size: 1.39 KB

Versions: 13

Compression:

Stored size: 1.39 KB

Contents

# loader base class for create OpenAPI::Schemas::Base object
class OpenAPIParser::SchemaLoader::Creator < OpenAPIParser::SchemaLoader::Base
  # @param [String] variable_name
  # @param [Hash] options
  def initialize(variable_name, options)
    super(variable_name, options)

    @klass = options[:klass]
    @allow_reference = options[:reference] || false
    @allow_data_type = options[:allow_data_type]
  end

  private

    attr_reader :klass, :allow_reference, :allow_data_type

    def build_object_reference_from_base(base, names)
      names = [names] unless names.kind_of?(Array)
      ref = names.map { |n| escape_reference(n) }.join('/')

      "#{base}/#{ref}"
    end

    # @return Boolean
    def check_reference_schema?(check_schema)
      check_object_schema?(check_schema) && !check_schema['$ref'].nil?
    end

    def check_object_schema?(check_schema)
      check_schema.kind_of?(::Hash)
    end

    def escape_reference(str)
      str.to_s.gsub('/', '~1')
    end

    def build_openapi_object_from_option(target_object, ref, schema)
      return nil unless schema

      if @allow_data_type && !check_object_schema?(schema)
        schema
      elsif @allow_reference && check_reference_schema?(schema)
        OpenAPIParser::Schemas::Reference.new(ref, target_object, target_object.root, schema)
      else
        @klass.new(ref, target_object, target_object.root, schema)
      end
    end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
openapi_parser-0.3.0 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.2.7 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.2.6 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.2.5 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.2.4 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.2.3 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.2.2 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.2.1 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.2.0 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.1.9 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.1.8 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.1.7 lib/openapi_parser/concerns/schema_loader/creator.rb
openapi_parser-0.1.6 lib/openapi_parser/concerns/schema_loader/creator.rb