tinygql 0.1.1 → 0.1.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.
@@ -2,16 +2,16 @@ module TinyGQL
2
2
  module Visitors
3
3
  module Visitor
4
4
  def handle_document obj
5
- obj.definitions.each { _1.accept self }
5
+ obj.definitions.each { |v| v.accept self }
6
6
  end
7
7
  def handle_operation_definition obj
8
8
  if obj.variable_definitions
9
- obj.variable_definitions.each { _1.accept self }
9
+ obj.variable_definitions.each { |v| v.accept self }
10
10
  end
11
11
  if obj.directives
12
- obj.directives.each { _1.accept self }
12
+ obj.directives.each { |v| v.accept self }
13
13
  end
14
- obj.selection_set.each { _1.accept self }
14
+ obj.selection_set.each { |v| v.accept self }
15
15
  end
16
16
  def handle_variable obj
17
17
  end
@@ -37,13 +37,13 @@ module TinyGQL
37
37
  end
38
38
  def handle_field obj
39
39
  if obj.arguments
40
- obj.arguments.each { _1.accept self }
40
+ obj.arguments.each { |v| v.accept self }
41
41
  end
42
42
  if obj.directives
43
- obj.directives.each { _1.accept self }
43
+ obj.directives.each { |v| v.accept self }
44
44
  end
45
45
  if obj.selection_set
46
- obj.selection_set.each { _1.accept self }
46
+ obj.selection_set.each { |v| v.accept self }
47
47
  end
48
48
  end
49
49
  def handle_object_field obj
@@ -64,10 +64,10 @@ module TinyGQL
64
64
  def handle_list_value obj
65
65
  end
66
66
  def handle_object_value obj
67
- obj.values.each { _1.accept self }
67
+ obj.values.each { |v| v.accept self }
68
68
  end
69
69
  def handle_directive obj
70
- obj.arguments.each { _1.accept self }
70
+ obj.arguments.each { |v| v.accept self }
71
71
  end
72
72
  def handle_type_condition obj
73
73
  obj.named_type.accept self
@@ -77,115 +77,145 @@ module TinyGQL
77
77
  obj.type_condition.accept self
78
78
  end
79
79
  if obj.directives
80
- obj.directives.each { _1.accept self }
80
+ obj.directives.each { |v| v.accept self }
81
81
  end
82
- obj.selection_set.each { _1.accept self }
82
+ obj.selection_set.each { |v| v.accept self }
83
83
  end
84
84
  def handle_fragment_spread obj
85
85
  obj.fragment_name.accept self
86
86
  if obj.directives
87
- obj.directives.each { _1.accept self }
87
+ obj.directives.each { |v| v.accept self }
88
88
  end
89
89
  end
90
90
  def handle_fragment_definition obj
91
91
  obj.fragment_name.accept self
92
92
  obj.type_condition.accept self
93
93
  if obj.directives
94
- obj.directives.each { _1.accept self }
94
+ obj.directives.each { |v| v.accept self }
95
95
  end
96
- obj.selection_set.each { _1.accept self }
96
+ obj.selection_set.each { |v| v.accept self }
97
97
  end
98
98
  def handle_root_operation_type_definition obj
99
99
  obj.operation_type.accept self
100
100
  obj.named_type.accept self
101
101
  end
102
102
  def handle_schema_definition obj
103
+ if obj.description
104
+ obj.description.accept self
105
+ end
103
106
  if obj.directives
104
- obj.directives.each { _1.accept self }
107
+ obj.directives.each { |v| v.accept self }
105
108
  end
106
- obj.root_operation_definitions.each { _1.accept self }
109
+ obj.root_operation_definitions.each { |v| v.accept self }
107
110
  end
108
111
  def handle_field_definition obj
112
+ if obj.description
113
+ obj.description.accept self
114
+ end
109
115
  if obj.arguments_definition
110
- obj.arguments_definition.each { _1.accept self }
116
+ obj.arguments_definition.each { |v| v.accept self }
111
117
  end
112
118
  obj.type.accept self
113
119
  if obj.directives
114
- obj.directives.each { _1.accept self }
120
+ obj.directives.each { |v| v.accept self }
115
121
  end
116
122
  end
117
123
  def handle_input_value_definition obj
124
+ if obj.description
125
+ obj.description.accept self
126
+ end
118
127
  obj.type.accept self
119
128
  if obj.default_value
120
129
  obj.default_value.accept self
121
130
  end
122
131
  if obj.directives
123
- obj.directives.each { _1.accept self }
132
+ obj.directives.each { |v| v.accept self }
124
133
  end
125
134
  end
126
135
  def handle_object_type_definition obj
136
+ if obj.description
137
+ obj.description.accept self
138
+ end
127
139
  if obj.implements_interfaces
128
- obj.implements_interfaces.each { _1.accept self }
140
+ obj.implements_interfaces.each { |v| v.accept self }
129
141
  end
130
142
  if obj.directives
131
- obj.directives.each { _1.accept self }
143
+ obj.directives.each { |v| v.accept self }
132
144
  end
133
145
  if obj.fields_definition
134
- obj.fields_definition.each { _1.accept self }
146
+ obj.fields_definition.each { |v| v.accept self }
135
147
  end
136
148
  end
137
149
  def handle_interface_type_definition obj
150
+ if obj.description
151
+ obj.description.accept self
152
+ end
138
153
  if obj.directives
139
- obj.directives.each { _1.accept self }
154
+ obj.directives.each { |v| v.accept self }
140
155
  end
141
156
  if obj.fields_definition
142
- obj.fields_definition.each { _1.accept self }
157
+ obj.fields_definition.each { |v| v.accept self }
143
158
  end
144
159
  end
145
160
  def handle_union_type_definition obj
161
+ if obj.description
162
+ obj.description.accept self
163
+ end
146
164
  if obj.directives
147
- obj.directives.each { _1.accept self }
165
+ obj.directives.each { |v| v.accept self }
148
166
  end
149
167
  if obj.union_member_types
150
- obj.union_member_types.each { _1.accept self }
168
+ obj.union_member_types.each { |v| v.accept self }
151
169
  end
152
170
  end
153
171
  def handle_scalar_type_definition obj
172
+ if obj.description
173
+ obj.description.accept self
174
+ end
154
175
  if obj.directives
155
- obj.directives.each { _1.accept self }
176
+ obj.directives.each { |v| v.accept self }
156
177
  end
157
178
  end
158
179
  def handle_enum_value_definition obj
180
+ if obj.description
181
+ obj.description.accept self
182
+ end
159
183
  obj.enum_value.accept self
160
184
  if obj.directives
161
- obj.directives.each { _1.accept self }
185
+ obj.directives.each { |v| v.accept self }
162
186
  end
163
187
  end
164
188
  def handle_enum_type_definition obj
189
+ if obj.description
190
+ obj.description.accept self
191
+ end
165
192
  if obj.directives
166
- obj.directives.each { _1.accept self }
193
+ obj.directives.each { |v| v.accept self }
167
194
  end
168
195
  if obj.enum_value_definition
169
- obj.enum_value_definition.each { _1.accept self }
196
+ obj.enum_value_definition.each { |v| v.accept self }
170
197
  end
171
198
  end
172
199
  def handle_input_object_type_definition obj
200
+ if obj.description
201
+ obj.description.accept self
202
+ end
173
203
  if obj.directives
174
- obj.directives.each { _1.accept self }
204
+ obj.directives.each { |v| v.accept self }
175
205
  end
176
206
  if obj.input_fields_definition
177
- obj.input_fields_definition.each { _1.accept self }
207
+ obj.input_fields_definition.each { |v| v.accept self }
178
208
  end
179
209
  end
180
210
  def handle_object_type_extension obj
181
211
  if obj.implements_interfaces
182
- obj.implements_interfaces.each { _1.accept self }
212
+ obj.implements_interfaces.each { |v| v.accept self }
183
213
  end
184
214
  if obj.directives
185
- obj.directives.each { _1.accept self }
215
+ obj.directives.each { |v| v.accept self }
186
216
  end
187
217
  if obj.fields_definition
188
- obj.fields_definition.each { _1.accept self }
218
+ obj.fields_definition.each { |v| v.accept self }
189
219
  end
190
220
  end
191
221
  def handle_executable_directive_location obj
@@ -193,26 +223,29 @@ module TinyGQL
193
223
  def handle_type_system_directive_location obj
194
224
  end
195
225
  def handle_directive_definition obj
226
+ if obj.description
227
+ obj.description.accept self
228
+ end
196
229
  if obj.arguments_definition
197
- obj.arguments_definition.each { _1.accept self }
230
+ obj.arguments_definition.each { |v| v.accept self }
198
231
  end
199
- obj.directive_locations.each { _1.accept self }
232
+ obj.directive_locations.each { |v| v.accept self }
200
233
  end
201
234
  end
202
235
 
203
236
  module Fold
204
237
  def handle_document obj, seed
205
- obj.definitions.each { seed = _1.fold(self, seed) }
238
+ obj.definitions.each { |v| seed = v.fold(self, seed) }
206
239
  seed
207
240
  end
208
241
  def handle_operation_definition obj, seed
209
242
  if obj.variable_definitions
210
- obj.variable_definitions.each { seed = _1.fold(self, seed) }
243
+ obj.variable_definitions.each { |v| seed = v.fold(self, seed) }
211
244
  end
212
245
  if obj.directives
213
- obj.directives.each { seed = _1.fold(self, seed) }
246
+ obj.directives.each { |v| seed = v.fold(self, seed) }
214
247
  end
215
- obj.selection_set.each { seed = _1.fold(self, seed) }
248
+ obj.selection_set.each { |v| seed = v.fold(self, seed) }
216
249
  seed
217
250
  end
218
251
  def handle_variable obj, seed
@@ -246,13 +279,13 @@ module TinyGQL
246
279
  end
247
280
  def handle_field obj, seed
248
281
  if obj.arguments
249
- obj.arguments.each { seed = _1.fold(self, seed) }
282
+ obj.arguments.each { |v| seed = v.fold(self, seed) }
250
283
  end
251
284
  if obj.directives
252
- obj.directives.each { seed = _1.fold(self, seed) }
285
+ obj.directives.each { |v| seed = v.fold(self, seed) }
253
286
  end
254
287
  if obj.selection_set
255
- obj.selection_set.each { seed = _1.fold(self, seed) }
288
+ obj.selection_set.each { |v| seed = v.fold(self, seed) }
256
289
  end
257
290
  seed
258
291
  end
@@ -282,11 +315,11 @@ module TinyGQL
282
315
  seed
283
316
  end
284
317
  def handle_object_value obj, seed
285
- obj.values.each { seed = _1.fold(self, seed) }
318
+ obj.values.each { |v| seed = v.fold(self, seed) }
286
319
  seed
287
320
  end
288
321
  def handle_directive obj, seed
289
- obj.arguments.each { seed = _1.fold(self, seed) }
322
+ obj.arguments.each { |v| seed = v.fold(self, seed) }
290
323
  seed
291
324
  end
292
325
  def handle_type_condition obj, seed
@@ -298,15 +331,15 @@ module TinyGQL
298
331
  seed = obj.type_condition.fold self, seed
299
332
  end
300
333
  if obj.directives
301
- obj.directives.each { seed = _1.fold(self, seed) }
334
+ obj.directives.each { |v| seed = v.fold(self, seed) }
302
335
  end
303
- obj.selection_set.each { seed = _1.fold(self, seed) }
336
+ obj.selection_set.each { |v| seed = v.fold(self, seed) }
304
337
  seed
305
338
  end
306
339
  def handle_fragment_spread obj, seed
307
340
  seed = obj.fragment_name.fold self, seed
308
341
  if obj.directives
309
- obj.directives.each { seed = _1.fold(self, seed) }
342
+ obj.directives.each { |v| seed = v.fold(self, seed) }
310
343
  end
311
344
  seed
312
345
  end
@@ -314,9 +347,9 @@ module TinyGQL
314
347
  seed = obj.fragment_name.fold self, seed
315
348
  seed = obj.type_condition.fold self, seed
316
349
  if obj.directives
317
- obj.directives.each { seed = _1.fold(self, seed) }
350
+ obj.directives.each { |v| seed = v.fold(self, seed) }
318
351
  end
319
- obj.selection_set.each { seed = _1.fold(self, seed) }
352
+ obj.selection_set.each { |v| seed = v.fold(self, seed) }
320
353
  seed
321
354
  end
322
355
  def handle_root_operation_type_definition obj, seed
@@ -325,102 +358,132 @@ module TinyGQL
325
358
  seed
326
359
  end
327
360
  def handle_schema_definition obj, seed
361
+ if obj.description
362
+ seed = obj.description.fold self, seed
363
+ end
328
364
  if obj.directives
329
- obj.directives.each { seed = _1.fold(self, seed) }
365
+ obj.directives.each { |v| seed = v.fold(self, seed) }
330
366
  end
331
- obj.root_operation_definitions.each { seed = _1.fold(self, seed) }
367
+ obj.root_operation_definitions.each { |v| seed = v.fold(self, seed) }
332
368
  seed
333
369
  end
334
370
  def handle_field_definition obj, seed
371
+ if obj.description
372
+ seed = obj.description.fold self, seed
373
+ end
335
374
  if obj.arguments_definition
336
- obj.arguments_definition.each { seed = _1.fold(self, seed) }
375
+ obj.arguments_definition.each { |v| seed = v.fold(self, seed) }
337
376
  end
338
377
  seed = obj.type.fold self, seed
339
378
  if obj.directives
340
- obj.directives.each { seed = _1.fold(self, seed) }
379
+ obj.directives.each { |v| seed = v.fold(self, seed) }
341
380
  end
342
381
  seed
343
382
  end
344
383
  def handle_input_value_definition obj, seed
384
+ if obj.description
385
+ seed = obj.description.fold self, seed
386
+ end
345
387
  seed = obj.type.fold self, seed
346
388
  if obj.default_value
347
389
  seed = obj.default_value.fold self, seed
348
390
  end
349
391
  if obj.directives
350
- obj.directives.each { seed = _1.fold(self, seed) }
392
+ obj.directives.each { |v| seed = v.fold(self, seed) }
351
393
  end
352
394
  seed
353
395
  end
354
396
  def handle_object_type_definition obj, seed
397
+ if obj.description
398
+ seed = obj.description.fold self, seed
399
+ end
355
400
  if obj.implements_interfaces
356
- obj.implements_interfaces.each { seed = _1.fold(self, seed) }
401
+ obj.implements_interfaces.each { |v| seed = v.fold(self, seed) }
357
402
  end
358
403
  if obj.directives
359
- obj.directives.each { seed = _1.fold(self, seed) }
404
+ obj.directives.each { |v| seed = v.fold(self, seed) }
360
405
  end
361
406
  if obj.fields_definition
362
- obj.fields_definition.each { seed = _1.fold(self, seed) }
407
+ obj.fields_definition.each { |v| seed = v.fold(self, seed) }
363
408
  end
364
409
  seed
365
410
  end
366
411
  def handle_interface_type_definition obj, seed
412
+ if obj.description
413
+ seed = obj.description.fold self, seed
414
+ end
367
415
  if obj.directives
368
- obj.directives.each { seed = _1.fold(self, seed) }
416
+ obj.directives.each { |v| seed = v.fold(self, seed) }
369
417
  end
370
418
  if obj.fields_definition
371
- obj.fields_definition.each { seed = _1.fold(self, seed) }
419
+ obj.fields_definition.each { |v| seed = v.fold(self, seed) }
372
420
  end
373
421
  seed
374
422
  end
375
423
  def handle_union_type_definition obj, seed
424
+ if obj.description
425
+ seed = obj.description.fold self, seed
426
+ end
376
427
  if obj.directives
377
- obj.directives.each { seed = _1.fold(self, seed) }
428
+ obj.directives.each { |v| seed = v.fold(self, seed) }
378
429
  end
379
430
  if obj.union_member_types
380
- obj.union_member_types.each { seed = _1.fold(self, seed) }
431
+ obj.union_member_types.each { |v| seed = v.fold(self, seed) }
381
432
  end
382
433
  seed
383
434
  end
384
435
  def handle_scalar_type_definition obj, seed
436
+ if obj.description
437
+ seed = obj.description.fold self, seed
438
+ end
385
439
  if obj.directives
386
- obj.directives.each { seed = _1.fold(self, seed) }
440
+ obj.directives.each { |v| seed = v.fold(self, seed) }
387
441
  end
388
442
  seed
389
443
  end
390
444
  def handle_enum_value_definition obj, seed
445
+ if obj.description
446
+ seed = obj.description.fold self, seed
447
+ end
391
448
  seed = obj.enum_value.fold self, seed
392
449
  if obj.directives
393
- obj.directives.each { seed = _1.fold(self, seed) }
450
+ obj.directives.each { |v| seed = v.fold(self, seed) }
394
451
  end
395
452
  seed
396
453
  end
397
454
  def handle_enum_type_definition obj, seed
455
+ if obj.description
456
+ seed = obj.description.fold self, seed
457
+ end
398
458
  if obj.directives
399
- obj.directives.each { seed = _1.fold(self, seed) }
459
+ obj.directives.each { |v| seed = v.fold(self, seed) }
400
460
  end
401
461
  if obj.enum_value_definition
402
- obj.enum_value_definition.each { seed = _1.fold(self, seed) }
462
+ obj.enum_value_definition.each { |v| seed = v.fold(self, seed) }
403
463
  end
404
464
  seed
405
465
  end
406
466
  def handle_input_object_type_definition obj, seed
467
+ if obj.description
468
+ seed = obj.description.fold self, seed
469
+ end
407
470
  if obj.directives
408
- obj.directives.each { seed = _1.fold(self, seed) }
471
+ obj.directives.each { |v| seed = v.fold(self, seed) }
409
472
  end
410
473
  if obj.input_fields_definition
411
- obj.input_fields_definition.each { seed = _1.fold(self, seed) }
474
+ obj.input_fields_definition.each { |v| seed = v.fold(self, seed) }
412
475
  end
413
476
  seed
414
477
  end
415
478
  def handle_object_type_extension obj, seed
416
479
  if obj.implements_interfaces
417
- obj.implements_interfaces.each { seed = _1.fold(self, seed) }
480
+ obj.implements_interfaces.each { |v| seed = v.fold(self, seed) }
418
481
  end
419
482
  if obj.directives
420
- obj.directives.each { seed = _1.fold(self, seed) }
483
+ obj.directives.each { |v| seed = v.fold(self, seed) }
421
484
  end
422
485
  if obj.fields_definition
423
- obj.fields_definition.each { seed = _1.fold(self, seed) }
486
+ obj.fields_definition.each { |v| seed = v.fold(self, seed) }
424
487
  end
425
488
  seed
426
489
  end
@@ -431,10 +494,13 @@ module TinyGQL
431
494
  seed
432
495
  end
433
496
  def handle_directive_definition obj, seed
497
+ if obj.description
498
+ seed = obj.description.fold self, seed
499
+ end
434
500
  if obj.arguments_definition
435
- obj.arguments_definition.each { seed = _1.fold(self, seed) }
501
+ obj.arguments_definition.each { |v| seed = v.fold(self, seed) }
436
502
  end
437
- obj.directive_locations.each { seed = _1.fold(self, seed) }
503
+ obj.directive_locations.each { |v| seed = v.fold(self, seed) }
438
504
  seed
439
505
  end
440
506
  end
data/test/lexer_test.rb CHANGED
@@ -40,6 +40,18 @@ module TinyGQL
40
40
  assert_equal [:IDENTIFIER, "lol"], lexer.next_token
41
41
  end
42
42
 
43
+ def test_int
44
+ str = "1"
45
+ lexer = Lexer.new str
46
+ assert_equal [:INT, "1"], lexer.next_token
47
+ end
48
+
49
+ def test_float
50
+ str = "1.2"
51
+ lexer = Lexer.new str
52
+ assert_equal [:FLOAT, "1.2"], lexer.next_token
53
+ end
54
+
43
55
  def test_block_string
44
56
  doc = <<-eos
45
57
  """
data/test/parser_test.rb CHANGED
@@ -161,5 +161,31 @@ eod
161
161
  node = ast.find(&:object_type_definition?).first
162
162
  assert_equal ["a", "b", "c"], node.implements_interfaces.map(&:name)
163
163
  end
164
+
165
+ def test_schemas_have_descriptions
166
+ doc = <<-eod
167
+ "foo bar"
168
+ schema {
169
+ query: QueryType
170
+ mutation: MutationType
171
+ }
172
+ eod
173
+ ast = TinyGQL::Parser.parse doc
174
+ node = ast.find(&:schema_definition?)
175
+ assert node
176
+ assert_equal "foo bar", node.description.value
177
+ end
178
+
179
+ def test_directives_have_descriptions
180
+ doc = <<-eod
181
+ """neat!"""
182
+ directive @skip(if: Boolean!) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT
183
+ eod
184
+ ast = TinyGQL::Parser.parse doc
185
+ node = ast.find(&:directive_definition?)
186
+ assert node
187
+ assert_equal "neat!", node.description.value
188
+ assert_equal ["FIELD", "FRAGMENT_SPREAD", "INLINE_FRAGMENT"], node.directive_locations.map(&:name)
189
+ end
164
190
  end
165
191
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tinygql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-11 00:00:00.000000000 Z
11
+ date: 2023-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -51,7 +51,9 @@ files:
51
51
  - LICENSE
52
52
  - README.md
53
53
  - Rakefile
54
+ - benchmark/fixtures/negotiate.gql
54
55
  - bin/bench.rb
56
+ - bin/profile.rb
55
57
  - lib/tinygql.rb
56
58
  - lib/tinygql/lexer.rb
57
59
  - lib/tinygql/nodes.rb