Sha256: 34e0cb2c417d02cecaf4f7400d0b1089864485856decf82467debd4d87af6fbc

Contents?: true

Size: 966 Bytes

Versions: 6

Compression:

Stored size: 966 Bytes

Contents

# frozen_string_literal: true

module Rails
  module GraphQL
    class Type
      # The Int scalar type represents a signed 32-bit numeric
      # non-fractional value.
      #
      # See http://spec.graphql.org/June2018/#sec-Int
      class Scalar::IntScalar < Scalar
        self.spec_object = true
        aliases :integer

        desc 'The Int scalar type represents a signed 32-bit numeric non-fractional value.'

        max_value = (1 << 31)
        RANGE = (-max_value...max_value).freeze

        class << self
          def valid_input?(value)
            (valid_token?(value) && RANGE.cover?(value.to_i)) ||
              (value.is_a?(Integer) && RANGE.cover?(value))
          end

          def valid_output?(value)
            value.respond_to?(:to_i) && RANGE.cover?(value.to_i)
          end

          def as_json(value)
            value = value.to_i
            value if RANGE.cover?(value)
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rails-graphql-1.0.2 lib/rails/graphql/type/scalar/int_scalar.rb
rails-graphql-1.0.1 lib/rails/graphql/type/scalar/int_scalar.rb
rails-graphql-1.0.0 lib/rails/graphql/type/scalar/int_scalar.rb
rails-graphql-1.0.0.rc2 lib/rails/graphql/type/scalar/int_scalar.rb
rails-graphql-1.0.0.rc1 lib/rails/graphql/type/scalar/int_scalar.rb
rails-graphql-1.0.0.beta lib/rails/graphql/type/scalar/int_scalar.rb