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.
- checksums.yaml +4 -4
- data/Gemfile +3 -0
- data/Rakefile +11 -0
- data/benchmark/fixtures/negotiate.gql +3643 -0
- data/bin/bench.rb +15 -4
- data/bin/profile.rb +5 -0
- data/lib/tinygql/lexer.rb +37 -47
- data/lib/tinygql/nodes.rb +82 -81
- data/lib/tinygql/nodes.rb.erb +2 -2
- data/lib/tinygql/nodes.yml +11 -10
- data/lib/tinygql/parser.rb +23 -15
- data/lib/tinygql/version.rb +1 -1
- data/lib/tinygql/visitors.rb +140 -74
- data/test/lexer_test.rb +12 -0
- data/test/parser_test.rb +26 -0
- metadata +4 -2
data/lib/tinygql/visitors.rb
CHANGED
@@ -2,16 +2,16 @@ module TinyGQL
|
|
2
2
|
module Visitors
|
3
3
|
module Visitor
|
4
4
|
def handle_document obj
|
5
|
-
obj.definitions.each {
|
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 {
|
9
|
+
obj.variable_definitions.each { |v| v.accept self }
|
10
10
|
end
|
11
11
|
if obj.directives
|
12
|
-
obj.directives.each {
|
12
|
+
obj.directives.each { |v| v.accept self }
|
13
13
|
end
|
14
|
-
obj.selection_set.each {
|
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 {
|
40
|
+
obj.arguments.each { |v| v.accept self }
|
41
41
|
end
|
42
42
|
if obj.directives
|
43
|
-
obj.directives.each {
|
43
|
+
obj.directives.each { |v| v.accept self }
|
44
44
|
end
|
45
45
|
if obj.selection_set
|
46
|
-
obj.selection_set.each {
|
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 {
|
67
|
+
obj.values.each { |v| v.accept self }
|
68
68
|
end
|
69
69
|
def handle_directive obj
|
70
|
-
obj.arguments.each {
|
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 {
|
80
|
+
obj.directives.each { |v| v.accept self }
|
81
81
|
end
|
82
|
-
obj.selection_set.each {
|
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 {
|
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 {
|
94
|
+
obj.directives.each { |v| v.accept self }
|
95
95
|
end
|
96
|
-
obj.selection_set.each {
|
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 {
|
107
|
+
obj.directives.each { |v| v.accept self }
|
105
108
|
end
|
106
|
-
obj.root_operation_definitions.each {
|
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 {
|
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 {
|
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 {
|
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 {
|
140
|
+
obj.implements_interfaces.each { |v| v.accept self }
|
129
141
|
end
|
130
142
|
if obj.directives
|
131
|
-
obj.directives.each {
|
143
|
+
obj.directives.each { |v| v.accept self }
|
132
144
|
end
|
133
145
|
if obj.fields_definition
|
134
|
-
obj.fields_definition.each {
|
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 {
|
154
|
+
obj.directives.each { |v| v.accept self }
|
140
155
|
end
|
141
156
|
if obj.fields_definition
|
142
|
-
obj.fields_definition.each {
|
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 {
|
165
|
+
obj.directives.each { |v| v.accept self }
|
148
166
|
end
|
149
167
|
if obj.union_member_types
|
150
|
-
obj.union_member_types.each {
|
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 {
|
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 {
|
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 {
|
193
|
+
obj.directives.each { |v| v.accept self }
|
167
194
|
end
|
168
195
|
if obj.enum_value_definition
|
169
|
-
obj.enum_value_definition.each {
|
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 {
|
204
|
+
obj.directives.each { |v| v.accept self }
|
175
205
|
end
|
176
206
|
if obj.input_fields_definition
|
177
|
-
obj.input_fields_definition.each {
|
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 {
|
212
|
+
obj.implements_interfaces.each { |v| v.accept self }
|
183
213
|
end
|
184
214
|
if obj.directives
|
185
|
-
obj.directives.each {
|
215
|
+
obj.directives.each { |v| v.accept self }
|
186
216
|
end
|
187
217
|
if obj.fields_definition
|
188
|
-
obj.fields_definition.each {
|
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 {
|
230
|
+
obj.arguments_definition.each { |v| v.accept self }
|
198
231
|
end
|
199
|
-
obj.directive_locations.each {
|
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 =
|
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 =
|
243
|
+
obj.variable_definitions.each { |v| seed = v.fold(self, seed) }
|
211
244
|
end
|
212
245
|
if obj.directives
|
213
|
-
obj.directives.each { seed =
|
246
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
214
247
|
end
|
215
|
-
obj.selection_set.each { 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 =
|
282
|
+
obj.arguments.each { |v| seed = v.fold(self, seed) }
|
250
283
|
end
|
251
284
|
if obj.directives
|
252
|
-
obj.directives.each { 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 =
|
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 =
|
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 =
|
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 =
|
334
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
302
335
|
end
|
303
|
-
obj.selection_set.each { 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 =
|
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 =
|
350
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
318
351
|
end
|
319
|
-
obj.selection_set.each { 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 =
|
365
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
330
366
|
end
|
331
|
-
obj.root_operation_definitions.each { 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 =
|
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 =
|
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 =
|
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 =
|
401
|
+
obj.implements_interfaces.each { |v| seed = v.fold(self, seed) }
|
357
402
|
end
|
358
403
|
if obj.directives
|
359
|
-
obj.directives.each { 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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
480
|
+
obj.implements_interfaces.each { |v| seed = v.fold(self, seed) }
|
418
481
|
end
|
419
482
|
if obj.directives
|
420
|
-
obj.directives.each { 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 =
|
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 =
|
501
|
+
obj.arguments_definition.each { |v| seed = v.fold(self, seed) }
|
436
502
|
end
|
437
|
-
obj.directive_locations.each { 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.
|
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
|
+
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
|