class GraphQL::ScalarType


end
coerce_result ->(value) { value.to_f }
coerce_input ->(value) { Time.at(Float(value)) }
description “Time since epoch in seconds”
name “Time”
TimeType = GraphQL::ScalarType.define do
@example defining a type for Time
- ‘coerce_result` is used to turn Ruby values back into serializable values for query responses.
- `coerce_input` is used to prepare incoming values for GraphQL execution. (Incoming values come from variables or literal values in the query string.)
You can define custom scalars for your GraphQL server. It requires some special functions:
## Custom Scalars
(`types` is an instance of `GraphQL::Definition::TypeDefiner`; `.String`, `.Float`, etc are methods which return built-in scalars.)
|`GraphQL::BOOLEAN_TYPE` | `types.Boolean`|
|`GraphQL::ID_TYPE` | `types.ID`|
|`GraphQL::FLOAT_TYPE` | `types.Float`|
|`GraphQL::INT_TYPE` | `types.Int`|
|`GraphQL::STRING_TYPE` | `types.String`|
|——-|——–|
|Constant | `.define` helper|
`GraphQL` comes with standard built-in scalars:
## Built-in Scalars
Scalars are plain values. They are leaf nodes in a GraphQL query tree.
# GraphQL::ScalarType

def coerce=(proc)

def coerce=(proc)
  self.coerce_input = proc
  self.coerce_result = proc
end

def coerce_input=(proc)

def coerce_input=(proc)
  if !proc.nil?
    @coerce_input_proc = proc
  end
end

def coerce_non_null_input(value)

def coerce_non_null_input(value)
  ensure_defined
  @coerce_input_proc.call(value)
end

def coerce_result(value)

def coerce_result(value)
  ensure_defined
  @coerce_result_proc.call(value)
end

def coerce_result=(proc)

def coerce_result=(proc)
  if !proc.nil?
    @coerce_result_proc = proc
  end
end

def kind

def kind
  GraphQL::TypeKinds::SCALAR
end

def validate_non_null_input(value)

def validate_non_null_input(value)
  result = Query::InputValidationResult.new
  if coerce_non_null_input(value).nil?
    result.add_problem("Could not coerce value #{JSON.dump(value)} to #{name}")
  end
  result
end