class Graphlyte::Schema::Parser

Attributes

fragments_dictionary[R]
position[R]
tokens[R]

Public Class Methods

new(tokens) click to toggle source
# File lib/graphlyte/schema/parser.rb, line 228
def initialize(tokens)
  @tokens = tokens
  @fragment_tokens = sort_fragments([], take_fragments)
  @fragments_dictionary = {}
  @fragments_dictionary = @fragment_tokens.any? ? FragmentParser.new(@fragment_tokens).parse_fragments : {}
  @position = 0
end
parse(gql) click to toggle source
# File lib/graphlyte/schema/parser.rb, line 223
def self.parse(gql)
  obj = new Lexer.new(gql).tokenize
  obj.parse
end

Public Instance Methods

parse() click to toggle source
# File lib/graphlyte/schema/parser.rb, line 236
def parse
  if token = expect(:START_QUERY)
    parse_query(token[0][1])
  elsif token = expect(:START_MUTATION)
    parse_mutation(token[0][1])
  else
    raise "INVALID"
  end
end
parse_mutation(name) click to toggle source
# File lib/graphlyte/schema/parser.rb, line 254
def parse_mutation(name)
  builder = Builder.new parse_fields
  mutation = Query.new(name, :mutation, builder: builder)
  need(:END_MUTATION)
  mutation
end
parse_query(name) click to toggle source
# File lib/graphlyte/schema/parser.rb, line 246
def parse_query(name)
  parse_args
  builder = Builder.new parse_fields
  query = Query.new(name, :query, builder: builder)
  need(:END_QUERY)
  query
end