Sha256: e9c6fbab4357d30ef9d88f6833d0d5dd25acef4c6605148e8ca70ce247643832

Contents?: true

Size: 977 Bytes

Versions: 7

Compression:

Stored size: 977 Bytes

Contents

# frozen_string_literal: true

require_relative 'base_schema'

module Meta
  module JsonSchema
    class RefSchema < BaseSchema
      attr_reader :schema

      def initialize(schema, options = {})
        super(options)
        @schema = schema
      end

      def filter(value, user_options = {})
        value = super
        schema.filter(value, user_options)
      end

      def to_schema_doc(user_options)
        schema_name = schema.resolve_name(user_options[:stage])

        # 首先将 Schema 写进 schemas 选项中去
        schema_components = user_options[:schemas]
        unless schema_components.key?(schema_name)
          schema_components[schema_name] = nil # 首先设置 schemas 防止出现无限循环
          schema_components[schema_name] = schema.to_schema_doc(**user_options) # 原地修改 schemas,无妨
        end

        # 返回的是 $ref 结构
        { '$ref': "#/components/schemas/#{schema_name}" }
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
meta-api-0.0.9 lib//meta/json_schema/schemas/ref_schema.rb
meta-api-0.0.8 lib/meta/json_schema/schemas/ref_schema.rb
meta-api-0.0.7 lib/meta/json_schema/schemas/ref_schema.rb
meta-api-0.0.6 lib/meta/json_schema/schemas/ref_schema.rb
meta-api-0.0.5 lib/meta/json_schema/schemas/ref_schema.rb
meta-api-0.0.4 lib/meta/json_schema/schemas/ref_schema.rb
meta-api-0.0.3 lib/meta/json_schema/schemas/ref_schema.rb