graphql 1.2.2 → 1.2.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c1aafd43a1c33e73554a5e5231efd24bfdf236de
4
- data.tar.gz: f0d8e2e7225fce433a02976d7b61195afea4c573
3
+ metadata.gz: 280ed673cf1dbbf668aa99c14d43ab9ac9b97af8
4
+ data.tar.gz: c2b66a6c3bcad312b56bdf565dfd39475e0f627d
5
5
  SHA512:
6
- metadata.gz: 7fd15c75d9467dd23867d281dae3f932f64351a1a18d0010c85ca8c74297e0368e33dc15d3f6265937a09fe4339aadfa387f87e466137d265583577d951bedbc
7
- data.tar.gz: 39b48cbccf44d3c0c02226d7329dacef7045f5a8acea12cebe56f6ad2ce9fe6b4f0b318bd45699e7965884dbc935df015bb71abdcd65d964af211eca21718344
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 511 "lib/graphql/language/lexer.rb"
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 132 "lib/graphql/language/lexer.rl"
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 528 "lib/graphql/language/lexer.rb"
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 558 "lib/graphql/language/lexer.rb"
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 936 "lib/graphql/language/lexer.rb"
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 956 "lib/graphql/language/lexer.rb"
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 138 "lib/graphql/language/lexer.rl"
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: @previous_token,
996
+ prev_token: meta[:previous_token],
994
997
  )
995
998
 
996
- @previous_token = token
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: @previous_token,
1010
+ prev_token: meta[:previous_token],
1008
1011
  )
1009
- @previous_token = token
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: @previous_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: @previous_token,
1050
+ prev_token: meta[:previous_token],
1048
1051
  )
1049
1052
  end
1050
1053
 
1051
- @previous_token = token
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: @previous_token,
151
+ prev_token: meta[:previous_token],
149
152
  )
150
153
 
151
- @previous_token = token
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: @previous_token,
165
+ prev_token: meta[:previous_token],
163
166
  )
164
- @previous_token = token
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: @previous_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: @previous_token,
205
+ prev_token: meta[:previous_token],
203
206
  )
204
207
  end
205
208
 
206
- @previous_token = token
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 value
64
- when Array
63
+ case arg_defn_type
64
+ when GraphQL::ListType
65
65
  value.map { |item| wrap_value(item, arg_defn_type.of_type) }
66
- when Hash
67
- if arg_defn_type.unwrap.kind.input_object?
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
@@ -1,3 +1,3 @@
1
1
  module GraphQL
2
- VERSION = "1.2.2"
2
+ VERSION = "1.2.3"
3
3
  end
@@ -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
- assert args["b"].is_a?(GraphQL::Query::Arguments)
94
- assert args["c"].is_a?(Hash)
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.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-09 00:00:00.000000000 Z
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