graphql 0.10.7 → 0.10.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/graphql/language/parser.rb +1 -1
- data/lib/graphql/language/transform.rb +5 -4
- data/lib/graphql/version.rb +1 -1
- data/readme.md +17 -5
- data/spec/graphql/language/transform_spec.rb +6 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed91d2fd1d191758d362b06dd3af5bcc53589fad
|
4
|
+
data.tar.gz: a5b9d8f9ff219f4db84e24a569a6b396d034cd87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb2d62a66e88dc88e52ff05cb00317b79ee05a9aa0a3a36280d2f6aab2f6d7df1205c32e327d743227f9a491ce9d7ea66283e147633482a6f0973ce27abbe125
|
7
|
+
data.tar.gz: 31400a2541cbf1673b7b83c823d5be985daab47ec68085345b248cdbcd9373f4e1b31ef94f31da14e3468a177ab36998a5b84a37e24a99b47c73c9bd7dede970
|
@@ -99,7 +99,7 @@ module GraphQL
|
|
99
99
|
rule(:value_int) { (value_sign? >> match('\d').repeat(1)).as(:int) }
|
100
100
|
rule(:value_string) { str('"') >> value_string_char.repeat.maybe.as(:optional_string_content).as(:string) >> str('"')}
|
101
101
|
rule(:value_string_char) { value_string_escaped_char | value_string_escaped_unicode | value_string_source_char}
|
102
|
-
rule(:value_string_escaped_char) { str("\\") >> match('["
|
102
|
+
rule(:value_string_escaped_char) { str("\\") >> match('["\\\\/bfnrt]') }
|
103
103
|
rule(:value_string_escaped_unicode) { str("\\") >> match('u[\dA-Fa-f]{4}')}
|
104
104
|
rule(:value_string_source_char) { (str('"') | str("\\") | value_string_line_terminator).absent? >> any }
|
105
105
|
rule(:value_string_line_terminator) {
|
@@ -71,7 +71,7 @@ module GraphQL
|
|
71
71
|
rule(alias_name: simple(:a)) { a }
|
72
72
|
optional_sequence(:optional_field_arguments)
|
73
73
|
rule(field_argument_name: simple(:n), field_argument_value: simple(:v)) { CREATE_NODE[:Argument, name: n.to_s, value: v, position_source: n]}
|
74
|
-
rule(field_argument_name: simple(:n), field_argument_value:
|
74
|
+
rule(field_argument_name: simple(:n), field_argument_value: subtree(:v)) { CREATE_NODE[:Argument, name: n.to_s, value: v, position_source: n]}
|
75
75
|
optional_sequence(:optional_selections)
|
76
76
|
optional_sequence(:optional_directives)
|
77
77
|
|
@@ -86,7 +86,7 @@ module GraphQL
|
|
86
86
|
rule(non_null_type: simple(:t)) { CREATE_NODE[:NonNullType, of_type: t, line: t.line, col: t.col] }
|
87
87
|
|
88
88
|
# Values
|
89
|
-
rule(array:
|
89
|
+
rule(array: subtree(:v)) { v }
|
90
90
|
rule(array: simple(:v)) { [] } # just `nil`
|
91
91
|
rule(boolean: simple(:v)) { v == "true" ? true : false }
|
92
92
|
rule(input_object: sequence(:v)) { CREATE_NODE[:InputObject, pairs: v, line: (v.first ? v.first.line : 1), col: (v.first ? v.first.col : 1)] }
|
@@ -95,13 +95,14 @@ module GraphQL
|
|
95
95
|
rule(int: simple(:v)) { v.to_i }
|
96
96
|
rule(float: simple(:v)) { v.to_f }
|
97
97
|
|
98
|
-
ESCAPES = /\\
|
98
|
+
ESCAPES = /\\["\\\/bfnrt]/
|
99
|
+
ESCAPES_REPLACE = { '\\"' => '"', "\\\\" => "\\", "\\/" => '/', "\\b" => "\b", "\\f" => "\f", "\\n" => "\n", "\\r" => "\r", "\\t" => "\t" }
|
99
100
|
UTF_8 = /\\u[\da-f]{4}/i
|
100
101
|
UTF_8_REPLACE = -> (m) { [m[-4..-1].to_i(16)].pack('U') }
|
101
102
|
|
102
103
|
rule(string: simple(:v)) {
|
103
104
|
string = v.to_s
|
104
|
-
string.gsub!(ESCAPES,
|
105
|
+
string.gsub!(ESCAPES, ESCAPES_REPLACE)
|
105
106
|
string.gsub!(UTF_8, &UTF_8_REPLACE)
|
106
107
|
string
|
107
108
|
}
|
data/lib/graphql/version.rb
CHANGED
data/readme.md
CHANGED
@@ -9,9 +9,10 @@
|
|
9
9
|
A Ruby implementation of [GraphQL](http://graphql.org/).
|
10
10
|
|
11
11
|
- Guides
|
12
|
-
- [Introduction](
|
13
|
-
- [Defining Your Schema](
|
14
|
-
- [Executing Queries](
|
12
|
+
- [Introduction](http://www.rubydoc.info/github/rmosolgo/graphql-ruby/file/guides/introduction.md)
|
13
|
+
- [Defining Your Schema](http://www.rubydoc.info/github/rmosolgo/graphql-ruby/file/guides/defining_your_schema.md)
|
14
|
+
- [Executing Queries](http://www.rubydoc.info/github/rmosolgo/graphql-ruby/file/guides/executing_queries.md)
|
15
|
+
- [Testing](http://www.rubydoc.info/github/rmosolgo/graphql-ruby/file/guides/testing.md)
|
15
16
|
|
16
17
|
- [API Documentation](http://www.rubydoc.info/github/rmosolgo/graphql-ruby)
|
17
18
|
|
@@ -92,6 +93,19 @@ If you're building a backend for [Relay](http://facebook.github.io/relay/), you'
|
|
92
93
|
- A JSON dump of the schema, which you can get by sending [`GraphQL::Introspection::INTROSPECTION_QUERY`](https://github.com/rmosolgo/graphql-ruby/blob/master/lib/graphql/introspection/introspection_query.rb)
|
93
94
|
- Relay-specific helpers for GraphQL like Connections, node fields, and global ids. Here's one example of those: [`graphql-relay`](https://github.com/rmosolgo/graphql-relay-ruby)
|
94
95
|
|
96
|
+
## Getting Started Tutorials
|
97
|
+
|
98
|
+
#### Series: Building a blog in GraphQL and Relay on Rails
|
99
|
+
1. **Introduction:** https://medium.com/@gauravtiwari/graphql-and-relay-on-rails-getting-started-955a49d251de
|
100
|
+
2. **Part1:** https://medium.com/@gauravtiwari/graphql-and-relay-on-rails-creating-types-and-schema-b3f9b232ccfc
|
101
|
+
3. **Part2:**
|
102
|
+
https://medium.com/@gauravtiwari/graphql-and-relay-on-rails-first-relay-powered-react-component-cb3f9ee95eca
|
103
|
+
|
104
|
+
#### Tutorials
|
105
|
+
1. https://medium.com/@khor/relay-facebook-on-rails-8b4af2057152
|
106
|
+
2. https://blog.jacobwgillespie.com/from-rest-to-graphql-b4e95e94c26b#.4cjtklrwt
|
107
|
+
3. http://mgiroux.me/2015/getting-started-with-rails-graphql-relay/
|
108
|
+
4. http://mgiroux.me/2015/uploading-files-using-relay-with-rails/
|
95
109
|
|
96
110
|
## To Do
|
97
111
|
|
@@ -119,8 +133,6 @@ If you're building a backend for [Relay](http://facebook.github.io/relay/), you'
|
|
119
133
|
- This is a good chance to make an `Operation` abstraction of which `query`, `mutation` and `subscription` are members
|
120
134
|
- For a subscription, `graphql` would send an outbound message to the system (allow the host application to manage its own subscriptions via Pusher, ActionCable, whatever)
|
121
135
|
- Documentation
|
122
|
-
- Write a "Getting started with Rails"-type blog post
|
123
|
-
- Compile existing articles & slide decks and link to them from a guide
|
124
136
|
|
125
137
|
## Goals
|
126
138
|
|
@@ -24,6 +24,7 @@ describe GraphQL::Language::Transform do
|
|
24
24
|
someStuff(vars: [1,2,3])
|
25
25
|
someOtherStuff(input: {ints: [1,2,3]})
|
26
26
|
someEmptyStuff(emptyObj: {}, emptySpaceObj: { })
|
27
|
+
evenMoreStuff(arg: [[1]])
|
27
28
|
}
|
28
29
|
}
|
29
30
|
|
@@ -143,4 +144,9 @@ describe GraphQL::Language::Transform do
|
|
143
144
|
assert_equal(1, get_result("query { me }").parts.length)
|
144
145
|
assert_equal(1, get_result("mutation { touch }").parts.length)
|
145
146
|
end
|
147
|
+
|
148
|
+
it 'transforms escaped characters' do
|
149
|
+
res = get_result("{quoted: \"\\\" \\\\ \\/ \\b \\f \\n \\r \\t\"}", parse: :value_input_object)
|
150
|
+
assert_equal("\" \\ / \b \f \n \r \t", res.pairs[0].value)
|
151
|
+
end
|
146
152
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Mosolgo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parslet
|