class GraphQL::Schema::Scalar

Public Class Methods

coerce_input(val, ctx) click to toggle source
# File lib/graphql/schema/scalar.rb, line 9
def coerce_input(val, ctx)
  val
end
coerce_result(val, ctx) click to toggle source
# File lib/graphql/schema/scalar.rb, line 13
def coerce_result(val, ctx)
  val
end
default_scalar(is_default = nil) click to toggle source
# File lib/graphql/schema/scalar.rb, line 47
def default_scalar(is_default = nil)
  if !is_default.nil?
    @default_scalar = is_default
  end
  @default_scalar
end
default_scalar?() click to toggle source
# File lib/graphql/schema/scalar.rb, line 54
def default_scalar?
  @default_scalar ||= false
end
kind() click to toggle source
# File lib/graphql/schema/scalar.rb, line 31
def kind
  GraphQL::TypeKinds::SCALAR
end
specified_by_url(new_url = nil) click to toggle source
# File lib/graphql/schema/scalar.rb, line 35
def specified_by_url(new_url = nil)
  if new_url
    @specified_by_url = new_url
  elsif defined?(@specified_by_url)
    @specified_by_url
  elsif superclass.respond_to?(:specified_by_url)
    superclass.specified_by_url
  else
    nil
  end
end
to_graphql() click to toggle source
# File lib/graphql/schema/scalar.rb, line 19
def to_graphql
  type_defn = GraphQL::ScalarType.new
  type_defn.name = graphql_name
  type_defn.description = description
  type_defn.coerce_result = method(:coerce_result)
  type_defn.coerce_input = method(:coerce_input)
  type_defn.metadata[:type_class] = self
  type_defn.default_scalar = default_scalar
  type_defn.ast_node = ast_node
  type_defn
end
validate_non_null_input(value, ctx, max_errors: nil) click to toggle source
# File lib/graphql/schema/scalar.rb, line 58
def validate_non_null_input(value, ctx, max_errors: nil)
  result = Query::InputValidationResult.new
  coerced_result = begin
    ctx.query.with_error_handling do
      coerce_input(value, ctx)
    end
  rescue GraphQL::CoercionError => err
    err
  end

  if coerced_result.nil?
    str_value = if value == Float::INFINITY
      ""
    else
      " #{GraphQL::Language.serialize(value)}"
    end
    result.add_problem("Could not coerce value#{str_value} to #{graphql_name}")
  elsif coerced_result.is_a?(GraphQL::CoercionError)
    result.add_problem(coerced_result.message, message: coerced_result.message, extensions: coerced_result.extensions)
  end
  result
end