class GraphQL::ListType
Given a list type, you can always get the underlying type with {#unwrap}.
end
argument :values, types.String.to_list_type
# or
argument :values, types[types.String]
# …
field :newNames do
@example A field which accepts a list of strings
For input types, it says that the incoming value will be a list of the modified type.
field :items, ItemType.to_list_type
# or
field :items, types[ItemType]
@example A field which returns a list of items
For return types, it says that the returned value will be a list of the modified.
or {BaseType#to_list_type} (‘InnerType.to_list_type`)
List types can be created with the type helper (`types`)
A list type modifies another type.
def coerce_non_null_input(value, ctx)
def coerce_non_null_input(value, ctx) ensure_array(value).map { |item| of_type.coerce_input(item, ctx) } end
def coerce_result(value, ctx = nil)
def coerce_result(value, ctx = nil) if ctx.nil? warn_deprecated_coerce("coerce_isolated_result") ctx = GraphQL::Query::NullContext end ensure_array(value).map { |item| item.nil? ? nil : of_type.coerce_result(item, ctx) } end
def ensure_array(value)
def ensure_array(value) value.is_a?(Array) ? value : [value] end
def initialize(of_type:)
def initialize(of_type:) super() @of_type = of_type end
def kind
def kind GraphQL::TypeKinds::LIST end
def list?
def list? true end
def to_s
def to_s "[#{of_type.to_s}]" end
def validate_non_null_input(value, ctx)
def validate_non_null_input(value, ctx) result = GraphQL::Query::InputValidationResult.new ensure_array(value).each_with_index do |item, index| item_result = of_type.validate_input(item, ctx) if !item_result.valid? result.merge_result!(index, item_result) end end result end