graphql 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/graphql/language/lexer.rb +18 -15
- data/lib/graphql/language/lexer.rl +11 -8
- data/lib/graphql/query/arguments.rb +6 -5
- data/lib/graphql/version.rb +1 -1
- data/spec/graphql/enum_type_spec.rb +30 -0
- data/spec/graphql/language/lexer_spec.rb +6 -0
- data/spec/graphql/query/arguments_spec.rb +2 -2
- 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: 280ed673cf1dbbf668aa99c14d43ab9ac9b97af8
|
4
|
+
data.tar.gz: c2b66a6c3bcad312b56bdf565dfd39475e0f627d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7147139cddf0a0381c16cbc95ef614d00d6fe6993db51648d04b66d020f75cfad00e36ba1ec31e5ac04e793f55e54b898410cd0da9e1ba9d452465257abdbd7a
|
7
|
+
data.tar.gz: d8b2f834717227a408bd4a953f0dcbc82f8e05941fd848230c1895744bfdadddd45bdd50b61ca07e58eb091de1a648ad9c175b4149f3be77da83c7afd524911f
|
@@ -499,15 +499,18 @@ self.graphql_lexer_en_main = 6;
|
|
499
499
|
data = query_string.unpack("c*")
|
500
500
|
eof = data.length
|
501
501
|
|
502
|
+
# Since `Lexer` is a module, store all lexer state
|
503
|
+
# in this local variable:
|
502
504
|
meta = {
|
503
505
|
line: 1,
|
504
506
|
col: 1,
|
505
507
|
data: data,
|
506
|
-
tokens: []
|
508
|
+
tokens: [],
|
509
|
+
previous_token: nil,
|
507
510
|
}
|
508
511
|
|
509
512
|
|
510
|
-
# line
|
513
|
+
# line 514 "lib/graphql/language/lexer.rb"
|
511
514
|
begin
|
512
515
|
p ||= 0
|
513
516
|
pe ||= data.length
|
@@ -517,14 +520,14 @@ begin
|
|
517
520
|
act = 0
|
518
521
|
end
|
519
522
|
|
520
|
-
# line
|
523
|
+
# line 135 "lib/graphql/language/lexer.rl"
|
521
524
|
|
522
525
|
emit_token = ->(name) {
|
523
526
|
emit(name, ts, te, meta)
|
524
527
|
}
|
525
528
|
|
526
529
|
|
527
|
-
# line
|
530
|
+
# line 531 "lib/graphql/language/lexer.rb"
|
528
531
|
begin
|
529
532
|
_klen, _trans, _keys, _acts, _nacts = nil
|
530
533
|
_goto_level = 0
|
@@ -554,7 +557,7 @@ begin
|
|
554
557
|
begin
|
555
558
|
ts = p
|
556
559
|
end
|
557
|
-
# line
|
560
|
+
# line 561 "lib/graphql/language/lexer.rb"
|
558
561
|
end # from state action switch
|
559
562
|
end
|
560
563
|
if _trigger_goto
|
@@ -932,7 +935,7 @@ when 49 then
|
|
932
935
|
emit_token.call(:UNKNOWN_CHAR) end
|
933
936
|
end
|
934
937
|
end
|
935
|
-
# line
|
938
|
+
# line 939 "lib/graphql/language/lexer.rb"
|
936
939
|
end # action switch
|
937
940
|
end
|
938
941
|
end
|
@@ -952,7 +955,7 @@ when 0 then
|
|
952
955
|
# line 1 "NONE"
|
953
956
|
begin
|
954
957
|
ts = nil; end
|
955
|
-
# line
|
958
|
+
# line 959 "lib/graphql/language/lexer.rb"
|
956
959
|
end # to state action switch
|
957
960
|
end
|
958
961
|
if _trigger_goto
|
@@ -979,7 +982,7 @@ end
|
|
979
982
|
end
|
980
983
|
end
|
981
984
|
|
982
|
-
# line
|
985
|
+
# line 141 "lib/graphql/language/lexer.rl"
|
983
986
|
|
984
987
|
meta[:tokens]
|
985
988
|
end
|
@@ -990,10 +993,10 @@ end
|
|
990
993
|
value: meta[:data][ts...te].pack("c*"),
|
991
994
|
line: meta[:line],
|
992
995
|
col: meta[:col],
|
993
|
-
prev_token:
|
996
|
+
prev_token: meta[:previous_token],
|
994
997
|
)
|
995
998
|
|
996
|
-
|
999
|
+
meta[:previous_token] = token
|
997
1000
|
|
998
1001
|
meta[:col] += te - ts
|
999
1002
|
end
|
@@ -1004,9 +1007,9 @@ end
|
|
1004
1007
|
value: meta[:data][ts...te].pack("c*"),
|
1005
1008
|
line: meta[:line],
|
1006
1009
|
col: meta[:col],
|
1007
|
-
prev_token:
|
1010
|
+
prev_token: meta[:previous_token],
|
1008
1011
|
)
|
1009
|
-
|
1012
|
+
meta[:previous_token] = token
|
1010
1013
|
# Bump the column counter for the next token
|
1011
1014
|
meta[:col] += te - ts
|
1012
1015
|
end
|
@@ -1034,7 +1037,7 @@ end
|
|
1034
1037
|
value: value,
|
1035
1038
|
line: meta[:line],
|
1036
1039
|
col: meta[:col],
|
1037
|
-
prev_token:
|
1040
|
+
prev_token: meta[:previous_token],
|
1038
1041
|
)
|
1039
1042
|
else
|
1040
1043
|
replace_escaped_characters_in_place(value)
|
@@ -1044,11 +1047,11 @@ end
|
|
1044
1047
|
value: value,
|
1045
1048
|
line: meta[:line],
|
1046
1049
|
col: meta[:col],
|
1047
|
-
prev_token:
|
1050
|
+
prev_token: meta[:previous_token],
|
1048
1051
|
)
|
1049
1052
|
end
|
1050
1053
|
|
1051
|
-
|
1054
|
+
meta[:previous_token] = token
|
1052
1055
|
meta[:col] += te - ts
|
1053
1056
|
end
|
1054
1057
|
end
|
@@ -121,11 +121,14 @@ module GraphQL
|
|
121
121
|
data = query_string.unpack("c*")
|
122
122
|
eof = data.length
|
123
123
|
|
124
|
+
# Since `Lexer` is a module, store all lexer state
|
125
|
+
# in this local variable:
|
124
126
|
meta = {
|
125
127
|
line: 1,
|
126
128
|
col: 1,
|
127
129
|
data: data,
|
128
|
-
tokens: []
|
130
|
+
tokens: [],
|
131
|
+
previous_token: nil,
|
129
132
|
}
|
130
133
|
|
131
134
|
%% write init;
|
@@ -145,10 +148,10 @@ module GraphQL
|
|
145
148
|
value: meta[:data][ts...te].pack("c*"),
|
146
149
|
line: meta[:line],
|
147
150
|
col: meta[:col],
|
148
|
-
prev_token:
|
151
|
+
prev_token: meta[:previous_token],
|
149
152
|
)
|
150
153
|
|
151
|
-
|
154
|
+
meta[:previous_token] = token
|
152
155
|
|
153
156
|
meta[:col] += te - ts
|
154
157
|
end
|
@@ -159,9 +162,9 @@ module GraphQL
|
|
159
162
|
value: meta[:data][ts...te].pack("c*"),
|
160
163
|
line: meta[:line],
|
161
164
|
col: meta[:col],
|
162
|
-
prev_token:
|
165
|
+
prev_token: meta[:previous_token],
|
163
166
|
)
|
164
|
-
|
167
|
+
meta[:previous_token] = token
|
165
168
|
# Bump the column counter for the next token
|
166
169
|
meta[:col] += te - ts
|
167
170
|
end
|
@@ -189,7 +192,7 @@ module GraphQL
|
|
189
192
|
value: value,
|
190
193
|
line: meta[:line],
|
191
194
|
col: meta[:col],
|
192
|
-
prev_token:
|
195
|
+
prev_token: meta[:previous_token],
|
193
196
|
)
|
194
197
|
else
|
195
198
|
replace_escaped_characters_in_place(value)
|
@@ -199,11 +202,11 @@ module GraphQL
|
|
199
202
|
value: value,
|
200
203
|
line: meta[:line],
|
201
204
|
col: meta[:col],
|
202
|
-
prev_token:
|
205
|
+
prev_token: meta[:previous_token],
|
203
206
|
)
|
204
207
|
end
|
205
208
|
|
206
|
-
|
209
|
+
meta[:previous_token] = token
|
207
210
|
meta[:col] += te - ts
|
208
211
|
end
|
209
212
|
end
|
@@ -60,14 +60,15 @@ module GraphQL
|
|
60
60
|
NULL_ARGUMENT_VALUE = ArgumentValue.new(nil, nil, nil)
|
61
61
|
|
62
62
|
def wrap_value(value, arg_defn_type)
|
63
|
-
case
|
64
|
-
when
|
63
|
+
case arg_defn_type
|
64
|
+
when GraphQL::ListType
|
65
65
|
value.map { |item| wrap_value(item, arg_defn_type.of_type) }
|
66
|
-
when
|
67
|
-
|
66
|
+
when GraphQL::NonNullType
|
67
|
+
wrap_value(value, arg_defn_type.of_type)
|
68
|
+
when GraphQL::InputObjectType
|
69
|
+
if value.is_a?(Hash)
|
68
70
|
self.class.new(value, argument_definitions: arg_defn_type.arguments)
|
69
71
|
else
|
70
|
-
# It may be a custom scalar that coerces to a Hash
|
71
72
|
value
|
72
73
|
end
|
73
74
|
else
|
data/lib/graphql/version.rb
CHANGED
@@ -36,6 +36,36 @@ describe GraphQL::EnumType do
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
describe "values that are Arrays" do
|
40
|
+
let(:schema) {
|
41
|
+
enum = GraphQL::EnumType.define do
|
42
|
+
name "PluralEnum"
|
43
|
+
value 'PETS', value: ["dogs", "cats"]
|
44
|
+
value 'FRUITS', value: ["apples", "oranges"]
|
45
|
+
value 'PLANETS', value: ["Earth"]
|
46
|
+
end
|
47
|
+
|
48
|
+
query_type = GraphQL::ObjectType.define do
|
49
|
+
name "Query"
|
50
|
+
field :names, types[types.String] do
|
51
|
+
argument :things, types[enum]
|
52
|
+
resolve ->(o, a, c) {
|
53
|
+
a[:things].reduce(&:+)
|
54
|
+
}
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
GraphQL::Schema.define do
|
59
|
+
query(query_type)
|
60
|
+
end
|
61
|
+
}
|
62
|
+
|
63
|
+
it "accepts them as inputs" do
|
64
|
+
res = schema.execute("{ names(things: [PETS, PLANETS]) }")
|
65
|
+
assert_equal ["dogs", "cats", "Earth"], res["data"]["names"]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
39
69
|
it "has value description" do
|
40
70
|
assert_equal("Animal with horns", enum.values["GOAT"].description)
|
41
71
|
end
|
@@ -18,5 +18,11 @@ describe GraphQL::Language::Lexer do
|
|
18
18
|
it "keeps track of previous_token" do
|
19
19
|
assert_equal tokens[0], tokens[1].prev_token
|
20
20
|
end
|
21
|
+
|
22
|
+
it "clears the previous_token between runs" do
|
23
|
+
tok_1 = subject.tokenize(query_string)
|
24
|
+
tok_2 = subject.tokenize(query_string)
|
25
|
+
assert_equal nil, tok_2[0].prev_token
|
26
|
+
end
|
21
27
|
end
|
22
28
|
end
|
@@ -90,8 +90,8 @@ describe GraphQL::Query::Arguments do
|
|
90
90
|
{a: 1, b: {a: 2}, c: {a: 3}},
|
91
91
|
argument_definitions: input_type.arguments
|
92
92
|
)
|
93
|
-
|
94
|
-
|
93
|
+
assert_instance_of GraphQL::Query::Arguments, args["b"]
|
94
|
+
assert_instance_of Hash, args["c"]
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
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: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Mosolgo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: codeclimate-test-reporter
|