Sha256: 6bfa63777fd7526003c6e2195f604accfdb0beb030c4fd5d87b64c3387ab837a

Contents?: true

Size: 1.91 KB

Versions: 2

Compression:

Stored size: 1.91 KB

Contents

require "json"
require "parslet"
require "set"
require "singleton"
require "forwardable"

module GraphQL
  class ParseError < StandardError
    attr_reader :line, :col, :query
    def initialize(message, line, col, query)
      super(message)
      @line = line
      @col = col
      @query = query
    end
  end

  # Turn a query string into an AST
  # @param [String] a GraphQL query string
  # @return [GraphQL::Language::Nodes::Document]
  def self.parse(query_string)
    parse_with_parslet(query_string)
  end

  def self.parse_with_parslet(string)
    tree = GraphQL::PARSER.parse(string)
    document = GraphQL::TRANSFORM.apply(tree)
    if !document.is_a?(GraphQL::Language::Nodes::Document)
      raise("Parse failed! Sorry, somehow we failed to turn this string into a document. Please report this bug!")
    end
    document
  rescue Parslet::ParseFailed => error
    line, col = error.cause.source.line_and_column(error.cause.pos)
    raise GraphQL::ParseError.new(error.message, line, col, string)
  end
end

# Order matters for these:

require 'graphql/definition_helpers'
require 'graphql/base_type'
require 'graphql/object_type'

require 'graphql/enum_type'
require 'graphql/input_object_type'
require 'graphql/interface_type'
require 'graphql/list_type'
require 'graphql/non_null_type'
require 'graphql/union_type'

require 'graphql/argument'
require 'graphql/field'
require 'graphql/type_kinds'

require 'graphql/scalar_type'
require 'graphql/boolean_type'
require 'graphql/float_type'
require 'graphql/id_type'
require 'graphql/int_type'
require 'graphql/string_type'

require 'graphql/introspection'
require 'graphql/language'
require 'graphql/directive'
require 'graphql/schema'
require 'graphql/schema/printer'

# Order does not matter for these:

require 'graphql/execution_error'
require 'graphql/invalid_null_error'
require 'graphql/query'
require 'graphql/repl'
require 'graphql/static_validation'
require 'graphql/version'

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
graphql-0.11.1 lib/graphql.rb
graphql-0.11.0 lib/graphql.rb