Skip to content

geppetto-apps/graphql-parser

 
 

Repository files navigation

GraphQL::Parser

A small ruby gem wrapping the libgraphqlparser C library for parsing GraphQL.

Installation

Add this line to your application's Gemfile:

gem 'graphql-parser'

And then execute:

$ bundle

Or install it yourself as:

$ gem install graphql-parser

Usage

Parse your graphql string to get an AST:

require 'graphql/parser'
ast = GraphQL::Parser.parse('{ some_graphql_string }') # returns GraphQL::Parser::AST

This will raise GraphQL::Parser::Error on malformed input.

Implement a visitor:

class MyVisitor < GraphQL::Parser::Visitor
  def visit_document(node)
    # do something interesting in pre-order
  end

  def end_visit_document(node)
    # do something interesting in post-order
  end

  # implement visit methods for all other GraphQL node types or define an
  # appropriate `method_missing` for ones you don't want to handle
end

And walk the AST:

v = MyVisitor.new
v.accept(ast)

You can return GraphQL::Parser::SKIP_CHILDREN from a visitor to skip visiting that node's children.

Contributing

  1. Fork it ( https://github.com/Shopify/graphql-parser/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 78.0%
  • Python 12.8%
  • Ruby 8.7%
  • Shell 0.5%