Sha256: 34e7c4123d020a52da2df72b8521987816b71cf84b2d2aeeb7e7ba8131e9282d

Contents?: true

Size: 1.82 KB

Versions: 24

Compression:

Stored size: 1.82 KB

Contents

# frozen_string_literal: true
module GraphQL
  module Introspection
    class InputValueType < Introspection::BaseObject
      graphql_name "__InputValue"
      description "Arguments provided to Fields or Directives and the input fields of an "\
                  "InputObject are represented as Input Values which describe their type and "\
                  "optionally a default value."
      field :name, String, null: false
      field :description, String, null: true
      field :type, GraphQL::Schema::LateBoundType.new("__Type"), null: false
      field :default_value, String, "A GraphQL-formatted string representing the default value for this input value.", null: true

      def default_value
        if @object.default_value?
          value = @object.default_value
          if value.nil?
            'null'
          else
            coerced_default_value = @object.type.coerce_result(value, @context)
            serialize_default_value(coerced_default_value, @object.type)
          end
        else
          nil
        end
      end


      private

      # Recursively serialize, taking care not to add quotes to enum values
      def serialize_default_value(value, type)
        if value.nil?
          'null'
        elsif type.kind.list?
          inner_type = type.of_type
          "[" + value.map { |v| serialize_default_value(v, inner_type) }.join(", ") + "]"
        elsif type.kind.non_null?
          serialize_default_value(value, type.of_type)
        elsif type.kind.enum?
          value
        elsif type.kind.input_object?
          "{" +
            value.map do |k, v|
              arg_defn = type.arguments[k]
              "#{k}: #{serialize_default_value(v, arg_defn.type)}"
            end.join(", ") +
            "}"
        else
          GraphQL::Language.serialize(value)
        end
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
graphql-1.11.4 lib/graphql/introspection/input_value_type.rb
graphql-1.11.3 lib/graphql/introspection/input_value_type.rb
graphql-1.11.2 lib/graphql/introspection/input_value_type.rb
graphql-1.10.14 lib/graphql/introspection/input_value_type.rb
graphql-1.11.1 lib/graphql/introspection/input_value_type.rb
graphql-1.10.13 lib/graphql/introspection/input_value_type.rb
graphql-1.11.0 lib/graphql/introspection/input_value_type.rb
graphql-1.10.12 lib/graphql/introspection/input_value_type.rb
graphql-1.10.11 lib/graphql/introspection/input_value_type.rb
graphql-1.10.10 lib/graphql/introspection/input_value_type.rb
graphql-1.10.9 lib/graphql/introspection/input_value_type.rb
graphql-1.10.8 lib/graphql/introspection/input_value_type.rb
graphql-1.10.7 lib/graphql/introspection/input_value_type.rb
graphql-1.10.6 lib/graphql/introspection/input_value_type.rb
graphql-1.10.5 lib/graphql/introspection/input_value_type.rb
graphql-1.10.4 lib/graphql/introspection/input_value_type.rb
graphql-1.10.3 lib/graphql/introspection/input_value_type.rb
graphql-1.10.2 lib/graphql/introspection/input_value_type.rb
graphql-1.10.1 lib/graphql/introspection/input_value_type.rb
graphql-1.10.0 lib/graphql/introspection/input_value_type.rb