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