class GraphQL::Introspection::InputValueType

Public Instance Methods

default_value() click to toggle source
# File lib/graphql/introspection/input_value_type.rb, line 20
def default_value
  if @object.default_value?
    value = @object.default_value
    if value.nil?
      'null'
    else
      if (@object.type.kind.list? || (@object.type.kind.non_null? && @object.type.of_type.kind.list?)) && !value.respond_to?(:map)
        # This is a bit odd -- we expect the default value to be an application-style value, so we use coerce result below.
        # But coerce_result doesn't wrap single-item lists, which are valid inputs to list types.
        # So, apply that wrapper here if needed.
        value = [value]
      end
      coerced_default_value = @object.type.coerce_result(value, @context)
      serialize_default_value(coerced_default_value, @object.type)
    end
  else
    nil
  end
end
is_deprecated() click to toggle source
# File lib/graphql/introspection/input_value_type.rb, line 16
def is_deprecated
  !!@object.deprecation_reason
end

Private Instance Methods

serialize_default_value(value, type) click to toggle source

Recursively serialize, taking care not to add quotes to enum values

# File lib/graphql/introspection/input_value_type.rb, line 44
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.get_argument(k, context)
        "#{k}: #{serialize_default_value(v, arg_defn.type)}"
      end.join(", ") +
      "}"
  else
    GraphQL::Language.serialize(value)
  end
end