Sha256: eb365d72403f79fba8c14a38c5dd630cabdf0d4642017c4c9d67639e32745a7f

Contents?: true

Size: 679 Bytes

Versions: 11

Compression:

Stored size: 679 Bytes

Contents

require_relative 'base_schema'

module Meta
  module JsonSchema
    class DynamicSchema < BaseSchema
      def initialize(resolver, one_of: nil, **base_options)
        super(base_options)

        @resolver = resolver
        @one_of = one_of
      end

      def filter(value, user_options = {})
        value = super(value, user_options)
        schema = @resolver.call(value).to_schema
        schema.filter(value, user_options)
      end

      def to_schema_doc(user_options)
        schema = { type: 'object' }
        schema[:oneOf] = @one_of.map do |schema|
          schema.to_schema_doc(user_options)
        end if @one_of

        schema
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
meta-api-0.2.0 lib//meta/json_schema/schemas/dynamic_schema.rb
meta-api-0.1.2 lib//meta/json_schema/schemas/dynamic_schema.rb
meta-api-0.1.1 lib//meta/json_schema/schemas/dynamic_schema.rb
meta-api-0.1.0 lib//meta/json_schema/schemas/dynamic_schema.rb
meta-api-0.0.9 lib//meta/json_schema/schemas/dynamic_schema.rb
meta-api-0.0.8 lib/meta/json_schema/schemas/dynamic_schema.rb
meta-api-0.0.7 lib/meta/json_schema/schemas/dynamic_schema.rb
meta-api-0.0.6 lib/meta/json_schema/schemas/dynamic_schema.rb
meta-api-0.0.5 lib/meta/json_schema/schemas/dynamic_schema.rb
meta-api-0.0.4 lib/meta/json_schema/schemas/dynamic_schema.rb
meta-api-0.0.3 lib/meta/json_schema/schemas/dynamic_schema.rb