tinygql 0.1.1 → 0.1.2
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/tinygql/lexer.rb +37 -47
- data/lib/tinygql/nodes.rb +79 -79
- data/lib/tinygql/nodes.rb.erb +2 -2
- data/lib/tinygql/version.rb +1 -1
- data/lib/tinygql/visitors.rb +74 -74
- data/test/lexer_test.rb +12 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fbe2d05150ba3c665c9d4fe81ee632a870d4420776a7b77736d124fd7036081b
|
|
4
|
+
data.tar.gz: 3e3ef634a539c8345a0701c18a0d61fd158dacaca505ca17506f16e2287ed144
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9605f20a8c7fed57279b8632315b689135cac81d44bcdfe014ec72bf48cc564f0c4f1c35b02de098a3dabaf4cc5b97af90dd10a07ec6170a5bb0a84ac8597afc
|
|
7
|
+
data.tar.gz: 046db3a78e16f1f08c7c66cebf2a17c9e46a014e8d9e9f9f9faeb4c67aa6a74f7fab3b392e67dc9db43e6cf4b47cc784b0f9667d6caec1663ecd674a27d02210
|
data/lib/tinygql/lexer.rb
CHANGED
|
@@ -4,38 +4,41 @@ require "strscan"
|
|
|
4
4
|
|
|
5
5
|
module TinyGQL
|
|
6
6
|
class Lexer
|
|
7
|
-
IDENTIFIER = /[_A-Za-z][_0-9A-Za-z]
|
|
7
|
+
IDENTIFIER = /[_A-Za-z][_0-9A-Za-z]*\b/
|
|
8
8
|
IGNORE = %r{
|
|
9
9
|
(?:
|
|
10
10
|
[, \c\r\n\t]+ |
|
|
11
11
|
\#.*$
|
|
12
|
-
)
|
|
12
|
+
)*
|
|
13
13
|
}x
|
|
14
14
|
INT = /[-]?(?:[0]|[1-9][0-9]*)/
|
|
15
15
|
FLOAT_DECIMAL = /[.][0-9]+/
|
|
16
16
|
FLOAT_EXP = /[eE][+-]?[0-9]+/
|
|
17
|
-
|
|
17
|
+
NUMERIC = /#{INT}(#{FLOAT_DECIMAL}#{FLOAT_EXP}|#{FLOAT_DECIMAL}|#{FLOAT_EXP})?/
|
|
18
|
+
|
|
19
|
+
KEYWORDS = {
|
|
20
|
+
"on" => :ON,
|
|
21
|
+
"fragment" => :FRAGMENT,
|
|
22
|
+
"true" => :TRUE,
|
|
23
|
+
"false" => :FALSE,
|
|
24
|
+
"null" => :NULL,
|
|
25
|
+
"query" => :QUERY,
|
|
26
|
+
"mutation" => :MUTATION,
|
|
27
|
+
"subscription" => :SUBSCRIPTION,
|
|
28
|
+
"schema" => :SCHEMA,
|
|
29
|
+
"scalar" => :SCALAR,
|
|
30
|
+
"type" => :TYPE,
|
|
31
|
+
"extend" => :EXTEND,
|
|
32
|
+
"implements" => :IMPLEMENTS,
|
|
33
|
+
"interface" => :INTERFACE,
|
|
34
|
+
"union" => :UNION,
|
|
35
|
+
"enum" => :ENUM,
|
|
36
|
+
"input" => :INPUT,
|
|
37
|
+
"directive" => :DIRECTIVE,
|
|
38
|
+
"repeatable" => :REPEATABLE
|
|
39
|
+
}.freeze
|
|
18
40
|
|
|
19
41
|
module Literals
|
|
20
|
-
ON = /on\b/
|
|
21
|
-
FRAGMENT = /fragment\b/
|
|
22
|
-
TRUE = /true\b/
|
|
23
|
-
FALSE = /false\b/
|
|
24
|
-
NULL = /null\b/
|
|
25
|
-
QUERY = /query\b/
|
|
26
|
-
MUTATION = /mutation\b/
|
|
27
|
-
SUBSCRIPTION = /subscription\b/
|
|
28
|
-
SCHEMA = /schema\b/
|
|
29
|
-
SCALAR = /scalar\b/
|
|
30
|
-
TYPE = /type\b/
|
|
31
|
-
EXTEND = /extend\b/
|
|
32
|
-
IMPLEMENTS = /implements\b/
|
|
33
|
-
INTERFACE = /interface\b/
|
|
34
|
-
UNION = /union\b/
|
|
35
|
-
ENUM = /enum\b/
|
|
36
|
-
INPUT = /input\b/
|
|
37
|
-
DIRECTIVE = /directive\b/
|
|
38
|
-
REPEATABLE = /repeatable\b/
|
|
39
42
|
LCURLY = '{'
|
|
40
43
|
RCURLY = '}'
|
|
41
44
|
LPAREN = '('
|
|
@@ -66,9 +69,7 @@ module TinyGQL
|
|
|
66
69
|
STRING_CHAR = /#{ESCAPED_QUOTE}|[^"\\]|#{UNICODE_ESCAPE}|#{STRING_ESCAPE}/
|
|
67
70
|
|
|
68
71
|
LIT_NAME_LUT = Literals.constants.each_with_object({}) { |n, o|
|
|
69
|
-
|
|
70
|
-
key = key.is_a?(Regexp) ? key.source.gsub(/(\\b|\\)/, '') : key
|
|
71
|
-
o[key] = n
|
|
72
|
+
o[Literals.const_get(n)] = n
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
LIT = Regexp.union(Literals.constants.map { |n| Literals.const_get(n) })
|
|
@@ -86,9 +87,6 @@ module TinyGQL
|
|
|
86
87
|
#{BLOCK_QUOTE}
|
|
87
88
|
}xm
|
|
88
89
|
|
|
89
|
-
# # catch-all for anything else. must be at the bottom for precedence.
|
|
90
|
-
UNKNOWN_CHAR = /./
|
|
91
|
-
|
|
92
90
|
def initialize string
|
|
93
91
|
raise unless string.valid_encoding?
|
|
94
92
|
|
|
@@ -106,25 +104,17 @@ module TinyGQL
|
|
|
106
104
|
end
|
|
107
105
|
|
|
108
106
|
def advance
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
when str = @scan.scan(IDENTIFIER) then return emit(:IDENTIFIER, str)
|
|
121
|
-
when @scan.skip(BLOCK_STRING) then return emit_block(@scan[1])
|
|
122
|
-
when @scan.skip(QUOTED_STRING) then return emit_string(@scan[1])
|
|
123
|
-
when str = @scan.scan(UNKNOWN_CHAR) then return emit(:UNKNOWN_CHAR, str)
|
|
124
|
-
else
|
|
125
|
-
# This should never happen since `UNKNOWN_CHAR` ensures we make progress
|
|
126
|
-
raise "Unknown string?"
|
|
127
|
-
end
|
|
107
|
+
@scan.skip(IGNORE)
|
|
108
|
+
|
|
109
|
+
case
|
|
110
|
+
when str = @scan.scan(LIT) then return emit(LIT_NAME_LUT[str], str)
|
|
111
|
+
when str = @scan.scan(IDENTIFIER) then return emit(KEYWORDS.fetch(str, :IDENTIFIER), str)
|
|
112
|
+
when @scan.skip(BLOCK_STRING) then return emit_block(@scan[1])
|
|
113
|
+
when @scan.skip(QUOTED_STRING) then return emit_string(@scan[1])
|
|
114
|
+
when str = @scan.scan(NUMERIC) then return emit(@scan[1] ? :FLOAT : :INT, str)
|
|
115
|
+
when @scan.eos? then emit(nil, nil) and return false
|
|
116
|
+
else
|
|
117
|
+
emit(:UNKNOWN_CHAR, @scan.getch)
|
|
128
118
|
end
|
|
129
119
|
end
|
|
130
120
|
|
data/lib/tinygql/nodes.rb
CHANGED
|
@@ -3,48 +3,48 @@ module TinyGQL
|
|
|
3
3
|
class Node
|
|
4
4
|
include Enumerable
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
6
|
+
def document?; false; end
|
|
7
|
+
def operation_definition?; false; end
|
|
8
|
+
def variable?; false; end
|
|
9
|
+
def named_type?; false; end
|
|
10
|
+
def not_null_type?; false; end
|
|
11
|
+
def list_type?; false; end
|
|
12
|
+
def variable_definition?; false; end
|
|
13
|
+
def value?; false; end
|
|
14
|
+
def argument?; false; end
|
|
15
|
+
def field?; false; end
|
|
16
|
+
def object_field?; false; end
|
|
17
|
+
def int_value?; false; end
|
|
18
|
+
def float_value?; false; end
|
|
19
|
+
def string_value?; false; end
|
|
20
|
+
def boolean_value?; false; end
|
|
21
|
+
def null_value?; false; end
|
|
22
|
+
def enum_value?; false; end
|
|
23
|
+
def list_value?; false; end
|
|
24
|
+
def object_value?; false; end
|
|
25
|
+
def directive?; false; end
|
|
26
|
+
def type_condition?; false; end
|
|
27
|
+
def inline_fragment?; false; end
|
|
28
|
+
def fragment_spread?; false; end
|
|
29
|
+
def fragment_definition?; false; end
|
|
30
|
+
def root_operation_type_definition?; false; end
|
|
31
|
+
def schema_definition?; false; end
|
|
32
|
+
def field_definition?; false; end
|
|
33
|
+
def input_value_definition?; false; end
|
|
34
|
+
def object_type_definition?; false; end
|
|
35
|
+
def interface_type_definition?; false; end
|
|
36
|
+
def union_type_definition?; false; end
|
|
37
|
+
def scalar_type_definition?; false; end
|
|
38
|
+
def enum_value_definition?; false; end
|
|
39
|
+
def enum_type_definition?; false; end
|
|
40
|
+
def input_object_type_definition?; false; end
|
|
41
|
+
def object_type_extension?; false; end
|
|
42
|
+
def executable_directive_location?; false; end
|
|
43
|
+
def type_system_directive_location?; false; end
|
|
44
|
+
def directive_definition?; false; end
|
|
45
45
|
def each(&blk)
|
|
46
46
|
yield self
|
|
47
|
-
children.each {
|
|
47
|
+
children.each { |v| v.each(&blk) }
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
|
|
@@ -63,7 +63,7 @@ module TinyGQL
|
|
|
63
63
|
viz.handle_document self, seed
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
def document
|
|
66
|
+
def document?; true; end
|
|
67
67
|
|
|
68
68
|
def children
|
|
69
69
|
ary = []; ary.concat(definitions); ary
|
|
@@ -88,7 +88,7 @@ module TinyGQL
|
|
|
88
88
|
viz.handle_operation_definition self, seed
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
-
def operation_definition
|
|
91
|
+
def operation_definition?; true; end
|
|
92
92
|
|
|
93
93
|
def children
|
|
94
94
|
ary = []; ary.concat(variable_definitions) if variable_definitions; ary.concat(directives) if directives; ary.concat(selection_set); ary
|
|
@@ -109,7 +109,7 @@ module TinyGQL
|
|
|
109
109
|
viz.handle_variable self, seed
|
|
110
110
|
end
|
|
111
111
|
|
|
112
|
-
def variable
|
|
112
|
+
def variable?; true; end
|
|
113
113
|
|
|
114
114
|
def children
|
|
115
115
|
ary = []; ary
|
|
@@ -130,7 +130,7 @@ module TinyGQL
|
|
|
130
130
|
viz.handle_named_type self, seed
|
|
131
131
|
end
|
|
132
132
|
|
|
133
|
-
def named_type
|
|
133
|
+
def named_type?; true; end
|
|
134
134
|
|
|
135
135
|
def children
|
|
136
136
|
ary = []; ary
|
|
@@ -151,7 +151,7 @@ module TinyGQL
|
|
|
151
151
|
viz.handle_not_null_type self, seed
|
|
152
152
|
end
|
|
153
153
|
|
|
154
|
-
def not_null_type
|
|
154
|
+
def not_null_type?; true; end
|
|
155
155
|
|
|
156
156
|
def children
|
|
157
157
|
ary = []; ary << type; ary
|
|
@@ -172,7 +172,7 @@ module TinyGQL
|
|
|
172
172
|
viz.handle_list_type self, seed
|
|
173
173
|
end
|
|
174
174
|
|
|
175
|
-
def list_type
|
|
175
|
+
def list_type?; true; end
|
|
176
176
|
|
|
177
177
|
def children
|
|
178
178
|
ary = []; ary << type; ary
|
|
@@ -195,7 +195,7 @@ module TinyGQL
|
|
|
195
195
|
viz.handle_variable_definition self, seed
|
|
196
196
|
end
|
|
197
197
|
|
|
198
|
-
def variable_definition
|
|
198
|
+
def variable_definition?; true; end
|
|
199
199
|
|
|
200
200
|
def children
|
|
201
201
|
ary = []; ary << variable; ary << type; ary << default_value if default_value; ary
|
|
@@ -216,7 +216,7 @@ module TinyGQL
|
|
|
216
216
|
viz.handle_value self, seed
|
|
217
217
|
end
|
|
218
218
|
|
|
219
|
-
def value
|
|
219
|
+
def value?; true; end
|
|
220
220
|
|
|
221
221
|
def children
|
|
222
222
|
ary = []; ary
|
|
@@ -238,7 +238,7 @@ module TinyGQL
|
|
|
238
238
|
viz.handle_argument self, seed
|
|
239
239
|
end
|
|
240
240
|
|
|
241
|
-
def argument
|
|
241
|
+
def argument?; true; end
|
|
242
242
|
|
|
243
243
|
def children
|
|
244
244
|
ary = []; ary << value; ary
|
|
@@ -263,7 +263,7 @@ module TinyGQL
|
|
|
263
263
|
viz.handle_field self, seed
|
|
264
264
|
end
|
|
265
265
|
|
|
266
|
-
def field
|
|
266
|
+
def field?; true; end
|
|
267
267
|
|
|
268
268
|
def children
|
|
269
269
|
ary = []; ary.concat(arguments) if arguments; ary.concat(directives) if directives; ary.concat(selection_set) if selection_set; ary
|
|
@@ -285,7 +285,7 @@ module TinyGQL
|
|
|
285
285
|
viz.handle_object_field self, seed
|
|
286
286
|
end
|
|
287
287
|
|
|
288
|
-
def object_field
|
|
288
|
+
def object_field?; true; end
|
|
289
289
|
|
|
290
290
|
def children
|
|
291
291
|
ary = []; ary << value; ary
|
|
@@ -301,7 +301,7 @@ module TinyGQL
|
|
|
301
301
|
viz.handle_int_value self, seed
|
|
302
302
|
end
|
|
303
303
|
|
|
304
|
-
def int_value
|
|
304
|
+
def int_value?; true; end
|
|
305
305
|
|
|
306
306
|
end
|
|
307
307
|
class FloatValue < Value
|
|
@@ -314,7 +314,7 @@ module TinyGQL
|
|
|
314
314
|
viz.handle_float_value self, seed
|
|
315
315
|
end
|
|
316
316
|
|
|
317
|
-
def float_value
|
|
317
|
+
def float_value?; true; end
|
|
318
318
|
|
|
319
319
|
end
|
|
320
320
|
class StringValue < Value
|
|
@@ -327,7 +327,7 @@ module TinyGQL
|
|
|
327
327
|
viz.handle_string_value self, seed
|
|
328
328
|
end
|
|
329
329
|
|
|
330
|
-
def string_value
|
|
330
|
+
def string_value?; true; end
|
|
331
331
|
|
|
332
332
|
end
|
|
333
333
|
class BooleanValue < Value
|
|
@@ -340,7 +340,7 @@ module TinyGQL
|
|
|
340
340
|
viz.handle_boolean_value self, seed
|
|
341
341
|
end
|
|
342
342
|
|
|
343
|
-
def boolean_value
|
|
343
|
+
def boolean_value?; true; end
|
|
344
344
|
|
|
345
345
|
end
|
|
346
346
|
class NullValue < Value
|
|
@@ -353,7 +353,7 @@ module TinyGQL
|
|
|
353
353
|
viz.handle_null_value self, seed
|
|
354
354
|
end
|
|
355
355
|
|
|
356
|
-
def null_value
|
|
356
|
+
def null_value?; true; end
|
|
357
357
|
|
|
358
358
|
end
|
|
359
359
|
class EnumValue < Value
|
|
@@ -366,7 +366,7 @@ module TinyGQL
|
|
|
366
366
|
viz.handle_enum_value self, seed
|
|
367
367
|
end
|
|
368
368
|
|
|
369
|
-
def enum_value
|
|
369
|
+
def enum_value?; true; end
|
|
370
370
|
|
|
371
371
|
end
|
|
372
372
|
class ListValue < Value
|
|
@@ -379,7 +379,7 @@ module TinyGQL
|
|
|
379
379
|
viz.handle_list_value self, seed
|
|
380
380
|
end
|
|
381
381
|
|
|
382
|
-
def list_value
|
|
382
|
+
def list_value?; true; end
|
|
383
383
|
|
|
384
384
|
end
|
|
385
385
|
class ObjectValue < Node
|
|
@@ -397,7 +397,7 @@ module TinyGQL
|
|
|
397
397
|
viz.handle_object_value self, seed
|
|
398
398
|
end
|
|
399
399
|
|
|
400
|
-
def object_value
|
|
400
|
+
def object_value?; true; end
|
|
401
401
|
|
|
402
402
|
def children
|
|
403
403
|
ary = []; ary.concat(values); ary
|
|
@@ -419,7 +419,7 @@ module TinyGQL
|
|
|
419
419
|
viz.handle_directive self, seed
|
|
420
420
|
end
|
|
421
421
|
|
|
422
|
-
def directive
|
|
422
|
+
def directive?; true; end
|
|
423
423
|
|
|
424
424
|
def children
|
|
425
425
|
ary = []; ary.concat(arguments); ary
|
|
@@ -440,7 +440,7 @@ module TinyGQL
|
|
|
440
440
|
viz.handle_type_condition self, seed
|
|
441
441
|
end
|
|
442
442
|
|
|
443
|
-
def type_condition
|
|
443
|
+
def type_condition?; true; end
|
|
444
444
|
|
|
445
445
|
def children
|
|
446
446
|
ary = []; ary << named_type; ary
|
|
@@ -463,7 +463,7 @@ module TinyGQL
|
|
|
463
463
|
viz.handle_inline_fragment self, seed
|
|
464
464
|
end
|
|
465
465
|
|
|
466
|
-
def inline_fragment
|
|
466
|
+
def inline_fragment?; true; end
|
|
467
467
|
|
|
468
468
|
def children
|
|
469
469
|
ary = []; ary << type_condition if type_condition; ary.concat(directives) if directives; ary.concat(selection_set); ary
|
|
@@ -485,7 +485,7 @@ module TinyGQL
|
|
|
485
485
|
viz.handle_fragment_spread self, seed
|
|
486
486
|
end
|
|
487
487
|
|
|
488
|
-
def fragment_spread
|
|
488
|
+
def fragment_spread?; true; end
|
|
489
489
|
|
|
490
490
|
def children
|
|
491
491
|
ary = []; ary << fragment_name; ary.concat(directives) if directives; ary
|
|
@@ -509,7 +509,7 @@ module TinyGQL
|
|
|
509
509
|
viz.handle_fragment_definition self, seed
|
|
510
510
|
end
|
|
511
511
|
|
|
512
|
-
def fragment_definition
|
|
512
|
+
def fragment_definition?; true; end
|
|
513
513
|
|
|
514
514
|
def children
|
|
515
515
|
ary = []; ary << fragment_name; ary << type_condition; ary.concat(directives) if directives; ary.concat(selection_set); ary
|
|
@@ -531,7 +531,7 @@ module TinyGQL
|
|
|
531
531
|
viz.handle_root_operation_type_definition self, seed
|
|
532
532
|
end
|
|
533
533
|
|
|
534
|
-
def root_operation_type_definition
|
|
534
|
+
def root_operation_type_definition?; true; end
|
|
535
535
|
|
|
536
536
|
def children
|
|
537
537
|
ary = []; ary << operation_type; ary << named_type; ary
|
|
@@ -553,7 +553,7 @@ module TinyGQL
|
|
|
553
553
|
viz.handle_schema_definition self, seed
|
|
554
554
|
end
|
|
555
555
|
|
|
556
|
-
def schema_definition
|
|
556
|
+
def schema_definition?; true; end
|
|
557
557
|
|
|
558
558
|
def children
|
|
559
559
|
ary = []; ary.concat(directives) if directives; ary.concat(root_operation_definitions); ary
|
|
@@ -578,7 +578,7 @@ module TinyGQL
|
|
|
578
578
|
viz.handle_field_definition self, seed
|
|
579
579
|
end
|
|
580
580
|
|
|
581
|
-
def field_definition
|
|
581
|
+
def field_definition?; true; end
|
|
582
582
|
|
|
583
583
|
def children
|
|
584
584
|
ary = []; ary.concat(arguments_definition) if arguments_definition; ary << type; ary.concat(directives) if directives; ary
|
|
@@ -603,7 +603,7 @@ module TinyGQL
|
|
|
603
603
|
viz.handle_input_value_definition self, seed
|
|
604
604
|
end
|
|
605
605
|
|
|
606
|
-
def input_value_definition
|
|
606
|
+
def input_value_definition?; true; end
|
|
607
607
|
|
|
608
608
|
def children
|
|
609
609
|
ary = []; ary << type; ary << default_value if default_value; ary.concat(directives) if directives; ary
|
|
@@ -628,7 +628,7 @@ module TinyGQL
|
|
|
628
628
|
viz.handle_object_type_definition self, seed
|
|
629
629
|
end
|
|
630
630
|
|
|
631
|
-
def object_type_definition
|
|
631
|
+
def object_type_definition?; true; end
|
|
632
632
|
|
|
633
633
|
def children
|
|
634
634
|
ary = []; ary.concat(implements_interfaces) if implements_interfaces; ary.concat(directives) if directives; ary.concat(fields_definition) if fields_definition; ary
|
|
@@ -652,7 +652,7 @@ module TinyGQL
|
|
|
652
652
|
viz.handle_interface_type_definition self, seed
|
|
653
653
|
end
|
|
654
654
|
|
|
655
|
-
def interface_type_definition
|
|
655
|
+
def interface_type_definition?; true; end
|
|
656
656
|
|
|
657
657
|
def children
|
|
658
658
|
ary = []; ary.concat(directives) if directives; ary.concat(fields_definition) if fields_definition; ary
|
|
@@ -676,7 +676,7 @@ module TinyGQL
|
|
|
676
676
|
viz.handle_union_type_definition self, seed
|
|
677
677
|
end
|
|
678
678
|
|
|
679
|
-
def union_type_definition
|
|
679
|
+
def union_type_definition?; true; end
|
|
680
680
|
|
|
681
681
|
def children
|
|
682
682
|
ary = []; ary.concat(directives) if directives; ary.concat(union_member_types) if union_member_types; ary
|
|
@@ -699,7 +699,7 @@ module TinyGQL
|
|
|
699
699
|
viz.handle_scalar_type_definition self, seed
|
|
700
700
|
end
|
|
701
701
|
|
|
702
|
-
def scalar_type_definition
|
|
702
|
+
def scalar_type_definition?; true; end
|
|
703
703
|
|
|
704
704
|
def children
|
|
705
705
|
ary = []; ary.concat(directives) if directives; ary
|
|
@@ -722,7 +722,7 @@ module TinyGQL
|
|
|
722
722
|
viz.handle_enum_value_definition self, seed
|
|
723
723
|
end
|
|
724
724
|
|
|
725
|
-
def enum_value_definition
|
|
725
|
+
def enum_value_definition?; true; end
|
|
726
726
|
|
|
727
727
|
def children
|
|
728
728
|
ary = []; ary << enum_value; ary.concat(directives) if directives; ary
|
|
@@ -746,7 +746,7 @@ module TinyGQL
|
|
|
746
746
|
viz.handle_enum_type_definition self, seed
|
|
747
747
|
end
|
|
748
748
|
|
|
749
|
-
def enum_type_definition
|
|
749
|
+
def enum_type_definition?; true; end
|
|
750
750
|
|
|
751
751
|
def children
|
|
752
752
|
ary = []; ary.concat(directives) if directives; ary.concat(enum_value_definition) if enum_value_definition; ary
|
|
@@ -770,7 +770,7 @@ module TinyGQL
|
|
|
770
770
|
viz.handle_input_object_type_definition self, seed
|
|
771
771
|
end
|
|
772
772
|
|
|
773
|
-
def input_object_type_definition
|
|
773
|
+
def input_object_type_definition?; true; end
|
|
774
774
|
|
|
775
775
|
def children
|
|
776
776
|
ary = []; ary.concat(directives) if directives; ary.concat(input_fields_definition) if input_fields_definition; ary
|
|
@@ -794,7 +794,7 @@ module TinyGQL
|
|
|
794
794
|
viz.handle_object_type_extension self, seed
|
|
795
795
|
end
|
|
796
796
|
|
|
797
|
-
def object_type_extension
|
|
797
|
+
def object_type_extension?; true; end
|
|
798
798
|
|
|
799
799
|
def children
|
|
800
800
|
ary = []; ary.concat(implements_interfaces) if implements_interfaces; ary.concat(directives) if directives; ary.concat(fields_definition) if fields_definition; ary
|
|
@@ -815,7 +815,7 @@ module TinyGQL
|
|
|
815
815
|
viz.handle_executable_directive_location self, seed
|
|
816
816
|
end
|
|
817
817
|
|
|
818
|
-
def executable_directive_location
|
|
818
|
+
def executable_directive_location?; true; end
|
|
819
819
|
|
|
820
820
|
def children
|
|
821
821
|
ary = []; ary
|
|
@@ -836,7 +836,7 @@ module TinyGQL
|
|
|
836
836
|
viz.handle_type_system_directive_location self, seed
|
|
837
837
|
end
|
|
838
838
|
|
|
839
|
-
def type_system_directive_location
|
|
839
|
+
def type_system_directive_location?; true; end
|
|
840
840
|
|
|
841
841
|
def children
|
|
842
842
|
ary = []; ary
|
|
@@ -860,7 +860,7 @@ module TinyGQL
|
|
|
860
860
|
viz.handle_directive_definition self, seed
|
|
861
861
|
end
|
|
862
862
|
|
|
863
|
-
def directive_definition
|
|
863
|
+
def directive_definition?; true; end
|
|
864
864
|
|
|
865
865
|
def children
|
|
866
866
|
ary = []; ary.concat(arguments_definition) if arguments_definition; ary.concat(directive_locations); ary
|
data/lib/tinygql/nodes.rb.erb
CHANGED
|
@@ -4,7 +4,7 @@ module TinyGQL
|
|
|
4
4
|
include Enumerable
|
|
5
5
|
|
|
6
6
|
<%- nodes.each do |node| -%>
|
|
7
|
-
|
|
7
|
+
def <%= node.human_name %>?; false; end
|
|
8
8
|
<%- end -%>
|
|
9
9
|
def each(&blk)
|
|
10
10
|
yield self
|
|
@@ -32,7 +32,7 @@ module TinyGQL
|
|
|
32
32
|
viz.handle_<%= node.human_name %> self, seed
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
def <%= node.human_name
|
|
35
|
+
def <%= node.human_name %>?; true; end
|
|
36
36
|
|
|
37
37
|
<%- if node.has_children? -%>
|
|
38
38
|
def children
|
data/lib/tinygql/version.rb
CHANGED
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,23 +77,23 @@ 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
|
|
@@ -101,17 +101,17 @@ module TinyGQL
|
|
|
101
101
|
end
|
|
102
102
|
def handle_schema_definition obj
|
|
103
103
|
if obj.directives
|
|
104
|
-
obj.directives.each {
|
|
104
|
+
obj.directives.each { |v| v.accept self }
|
|
105
105
|
end
|
|
106
|
-
obj.root_operation_definitions.each {
|
|
106
|
+
obj.root_operation_definitions.each { |v| v.accept self }
|
|
107
107
|
end
|
|
108
108
|
def handle_field_definition obj
|
|
109
109
|
if obj.arguments_definition
|
|
110
|
-
obj.arguments_definition.each {
|
|
110
|
+
obj.arguments_definition.each { |v| v.accept self }
|
|
111
111
|
end
|
|
112
112
|
obj.type.accept self
|
|
113
113
|
if obj.directives
|
|
114
|
-
obj.directives.each {
|
|
114
|
+
obj.directives.each { |v| v.accept self }
|
|
115
115
|
end
|
|
116
116
|
end
|
|
117
117
|
def handle_input_value_definition obj
|
|
@@ -120,72 +120,72 @@ module TinyGQL
|
|
|
120
120
|
obj.default_value.accept self
|
|
121
121
|
end
|
|
122
122
|
if obj.directives
|
|
123
|
-
obj.directives.each {
|
|
123
|
+
obj.directives.each { |v| v.accept self }
|
|
124
124
|
end
|
|
125
125
|
end
|
|
126
126
|
def handle_object_type_definition obj
|
|
127
127
|
if obj.implements_interfaces
|
|
128
|
-
obj.implements_interfaces.each {
|
|
128
|
+
obj.implements_interfaces.each { |v| v.accept self }
|
|
129
129
|
end
|
|
130
130
|
if obj.directives
|
|
131
|
-
obj.directives.each {
|
|
131
|
+
obj.directives.each { |v| v.accept self }
|
|
132
132
|
end
|
|
133
133
|
if obj.fields_definition
|
|
134
|
-
obj.fields_definition.each {
|
|
134
|
+
obj.fields_definition.each { |v| v.accept self }
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
137
|
def handle_interface_type_definition obj
|
|
138
138
|
if obj.directives
|
|
139
|
-
obj.directives.each {
|
|
139
|
+
obj.directives.each { |v| v.accept self }
|
|
140
140
|
end
|
|
141
141
|
if obj.fields_definition
|
|
142
|
-
obj.fields_definition.each {
|
|
142
|
+
obj.fields_definition.each { |v| v.accept self }
|
|
143
143
|
end
|
|
144
144
|
end
|
|
145
145
|
def handle_union_type_definition obj
|
|
146
146
|
if obj.directives
|
|
147
|
-
obj.directives.each {
|
|
147
|
+
obj.directives.each { |v| v.accept self }
|
|
148
148
|
end
|
|
149
149
|
if obj.union_member_types
|
|
150
|
-
obj.union_member_types.each {
|
|
150
|
+
obj.union_member_types.each { |v| v.accept self }
|
|
151
151
|
end
|
|
152
152
|
end
|
|
153
153
|
def handle_scalar_type_definition obj
|
|
154
154
|
if obj.directives
|
|
155
|
-
obj.directives.each {
|
|
155
|
+
obj.directives.each { |v| v.accept self }
|
|
156
156
|
end
|
|
157
157
|
end
|
|
158
158
|
def handle_enum_value_definition obj
|
|
159
159
|
obj.enum_value.accept self
|
|
160
160
|
if obj.directives
|
|
161
|
-
obj.directives.each {
|
|
161
|
+
obj.directives.each { |v| v.accept self }
|
|
162
162
|
end
|
|
163
163
|
end
|
|
164
164
|
def handle_enum_type_definition obj
|
|
165
165
|
if obj.directives
|
|
166
|
-
obj.directives.each {
|
|
166
|
+
obj.directives.each { |v| v.accept self }
|
|
167
167
|
end
|
|
168
168
|
if obj.enum_value_definition
|
|
169
|
-
obj.enum_value_definition.each {
|
|
169
|
+
obj.enum_value_definition.each { |v| v.accept self }
|
|
170
170
|
end
|
|
171
171
|
end
|
|
172
172
|
def handle_input_object_type_definition obj
|
|
173
173
|
if obj.directives
|
|
174
|
-
obj.directives.each {
|
|
174
|
+
obj.directives.each { |v| v.accept self }
|
|
175
175
|
end
|
|
176
176
|
if obj.input_fields_definition
|
|
177
|
-
obj.input_fields_definition.each {
|
|
177
|
+
obj.input_fields_definition.each { |v| v.accept self }
|
|
178
178
|
end
|
|
179
179
|
end
|
|
180
180
|
def handle_object_type_extension obj
|
|
181
181
|
if obj.implements_interfaces
|
|
182
|
-
obj.implements_interfaces.each {
|
|
182
|
+
obj.implements_interfaces.each { |v| v.accept self }
|
|
183
183
|
end
|
|
184
184
|
if obj.directives
|
|
185
|
-
obj.directives.each {
|
|
185
|
+
obj.directives.each { |v| v.accept self }
|
|
186
186
|
end
|
|
187
187
|
if obj.fields_definition
|
|
188
|
-
obj.fields_definition.each {
|
|
188
|
+
obj.fields_definition.each { |v| v.accept self }
|
|
189
189
|
end
|
|
190
190
|
end
|
|
191
191
|
def handle_executable_directive_location obj
|
|
@@ -194,25 +194,25 @@ module TinyGQL
|
|
|
194
194
|
end
|
|
195
195
|
def handle_directive_definition obj
|
|
196
196
|
if obj.arguments_definition
|
|
197
|
-
obj.arguments_definition.each {
|
|
197
|
+
obj.arguments_definition.each { |v| v.accept self }
|
|
198
198
|
end
|
|
199
|
-
obj.directive_locations.each {
|
|
199
|
+
obj.directive_locations.each { |v| v.accept self }
|
|
200
200
|
end
|
|
201
201
|
end
|
|
202
202
|
|
|
203
203
|
module Fold
|
|
204
204
|
def handle_document obj, seed
|
|
205
|
-
obj.definitions.each { seed =
|
|
205
|
+
obj.definitions.each { |v| seed = v.fold(self, seed) }
|
|
206
206
|
seed
|
|
207
207
|
end
|
|
208
208
|
def handle_operation_definition obj, seed
|
|
209
209
|
if obj.variable_definitions
|
|
210
|
-
obj.variable_definitions.each { seed =
|
|
210
|
+
obj.variable_definitions.each { |v| seed = v.fold(self, seed) }
|
|
211
211
|
end
|
|
212
212
|
if obj.directives
|
|
213
|
-
obj.directives.each { seed =
|
|
213
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
214
214
|
end
|
|
215
|
-
obj.selection_set.each { seed =
|
|
215
|
+
obj.selection_set.each { |v| seed = v.fold(self, seed) }
|
|
216
216
|
seed
|
|
217
217
|
end
|
|
218
218
|
def handle_variable obj, seed
|
|
@@ -246,13 +246,13 @@ module TinyGQL
|
|
|
246
246
|
end
|
|
247
247
|
def handle_field obj, seed
|
|
248
248
|
if obj.arguments
|
|
249
|
-
obj.arguments.each { seed =
|
|
249
|
+
obj.arguments.each { |v| seed = v.fold(self, seed) }
|
|
250
250
|
end
|
|
251
251
|
if obj.directives
|
|
252
|
-
obj.directives.each { seed =
|
|
252
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
253
253
|
end
|
|
254
254
|
if obj.selection_set
|
|
255
|
-
obj.selection_set.each { seed =
|
|
255
|
+
obj.selection_set.each { |v| seed = v.fold(self, seed) }
|
|
256
256
|
end
|
|
257
257
|
seed
|
|
258
258
|
end
|
|
@@ -282,11 +282,11 @@ module TinyGQL
|
|
|
282
282
|
seed
|
|
283
283
|
end
|
|
284
284
|
def handle_object_value obj, seed
|
|
285
|
-
obj.values.each { seed =
|
|
285
|
+
obj.values.each { |v| seed = v.fold(self, seed) }
|
|
286
286
|
seed
|
|
287
287
|
end
|
|
288
288
|
def handle_directive obj, seed
|
|
289
|
-
obj.arguments.each { seed =
|
|
289
|
+
obj.arguments.each { |v| seed = v.fold(self, seed) }
|
|
290
290
|
seed
|
|
291
291
|
end
|
|
292
292
|
def handle_type_condition obj, seed
|
|
@@ -298,15 +298,15 @@ module TinyGQL
|
|
|
298
298
|
seed = obj.type_condition.fold self, seed
|
|
299
299
|
end
|
|
300
300
|
if obj.directives
|
|
301
|
-
obj.directives.each { seed =
|
|
301
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
302
302
|
end
|
|
303
|
-
obj.selection_set.each { seed =
|
|
303
|
+
obj.selection_set.each { |v| seed = v.fold(self, seed) }
|
|
304
304
|
seed
|
|
305
305
|
end
|
|
306
306
|
def handle_fragment_spread obj, seed
|
|
307
307
|
seed = obj.fragment_name.fold self, seed
|
|
308
308
|
if obj.directives
|
|
309
|
-
obj.directives.each { seed =
|
|
309
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
310
310
|
end
|
|
311
311
|
seed
|
|
312
312
|
end
|
|
@@ -314,9 +314,9 @@ module TinyGQL
|
|
|
314
314
|
seed = obj.fragment_name.fold self, seed
|
|
315
315
|
seed = obj.type_condition.fold self, seed
|
|
316
316
|
if obj.directives
|
|
317
|
-
obj.directives.each { seed =
|
|
317
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
318
318
|
end
|
|
319
|
-
obj.selection_set.each { seed =
|
|
319
|
+
obj.selection_set.each { |v| seed = v.fold(self, seed) }
|
|
320
320
|
seed
|
|
321
321
|
end
|
|
322
322
|
def handle_root_operation_type_definition obj, seed
|
|
@@ -326,18 +326,18 @@ module TinyGQL
|
|
|
326
326
|
end
|
|
327
327
|
def handle_schema_definition obj, seed
|
|
328
328
|
if obj.directives
|
|
329
|
-
obj.directives.each { seed =
|
|
329
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
330
330
|
end
|
|
331
|
-
obj.root_operation_definitions.each { seed =
|
|
331
|
+
obj.root_operation_definitions.each { |v| seed = v.fold(self, seed) }
|
|
332
332
|
seed
|
|
333
333
|
end
|
|
334
334
|
def handle_field_definition obj, seed
|
|
335
335
|
if obj.arguments_definition
|
|
336
|
-
obj.arguments_definition.each { seed =
|
|
336
|
+
obj.arguments_definition.each { |v| seed = v.fold(self, seed) }
|
|
337
337
|
end
|
|
338
338
|
seed = obj.type.fold self, seed
|
|
339
339
|
if obj.directives
|
|
340
|
-
obj.directives.each { seed =
|
|
340
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
341
341
|
end
|
|
342
342
|
seed
|
|
343
343
|
end
|
|
@@ -347,80 +347,80 @@ module TinyGQL
|
|
|
347
347
|
seed = obj.default_value.fold self, seed
|
|
348
348
|
end
|
|
349
349
|
if obj.directives
|
|
350
|
-
obj.directives.each { seed =
|
|
350
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
351
351
|
end
|
|
352
352
|
seed
|
|
353
353
|
end
|
|
354
354
|
def handle_object_type_definition obj, seed
|
|
355
355
|
if obj.implements_interfaces
|
|
356
|
-
obj.implements_interfaces.each { seed =
|
|
356
|
+
obj.implements_interfaces.each { |v| seed = v.fold(self, seed) }
|
|
357
357
|
end
|
|
358
358
|
if obj.directives
|
|
359
|
-
obj.directives.each { seed =
|
|
359
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
360
360
|
end
|
|
361
361
|
if obj.fields_definition
|
|
362
|
-
obj.fields_definition.each { seed =
|
|
362
|
+
obj.fields_definition.each { |v| seed = v.fold(self, seed) }
|
|
363
363
|
end
|
|
364
364
|
seed
|
|
365
365
|
end
|
|
366
366
|
def handle_interface_type_definition obj, seed
|
|
367
367
|
if obj.directives
|
|
368
|
-
obj.directives.each { seed =
|
|
368
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
369
369
|
end
|
|
370
370
|
if obj.fields_definition
|
|
371
|
-
obj.fields_definition.each { seed =
|
|
371
|
+
obj.fields_definition.each { |v| seed = v.fold(self, seed) }
|
|
372
372
|
end
|
|
373
373
|
seed
|
|
374
374
|
end
|
|
375
375
|
def handle_union_type_definition obj, seed
|
|
376
376
|
if obj.directives
|
|
377
|
-
obj.directives.each { seed =
|
|
377
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
378
378
|
end
|
|
379
379
|
if obj.union_member_types
|
|
380
|
-
obj.union_member_types.each { seed =
|
|
380
|
+
obj.union_member_types.each { |v| seed = v.fold(self, seed) }
|
|
381
381
|
end
|
|
382
382
|
seed
|
|
383
383
|
end
|
|
384
384
|
def handle_scalar_type_definition obj, seed
|
|
385
385
|
if obj.directives
|
|
386
|
-
obj.directives.each { seed =
|
|
386
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
387
387
|
end
|
|
388
388
|
seed
|
|
389
389
|
end
|
|
390
390
|
def handle_enum_value_definition obj, seed
|
|
391
391
|
seed = obj.enum_value.fold self, seed
|
|
392
392
|
if obj.directives
|
|
393
|
-
obj.directives.each { seed =
|
|
393
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
394
394
|
end
|
|
395
395
|
seed
|
|
396
396
|
end
|
|
397
397
|
def handle_enum_type_definition obj, seed
|
|
398
398
|
if obj.directives
|
|
399
|
-
obj.directives.each { seed =
|
|
399
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
400
400
|
end
|
|
401
401
|
if obj.enum_value_definition
|
|
402
|
-
obj.enum_value_definition.each { seed =
|
|
402
|
+
obj.enum_value_definition.each { |v| seed = v.fold(self, seed) }
|
|
403
403
|
end
|
|
404
404
|
seed
|
|
405
405
|
end
|
|
406
406
|
def handle_input_object_type_definition obj, seed
|
|
407
407
|
if obj.directives
|
|
408
|
-
obj.directives.each { seed =
|
|
408
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
409
409
|
end
|
|
410
410
|
if obj.input_fields_definition
|
|
411
|
-
obj.input_fields_definition.each { seed =
|
|
411
|
+
obj.input_fields_definition.each { |v| seed = v.fold(self, seed) }
|
|
412
412
|
end
|
|
413
413
|
seed
|
|
414
414
|
end
|
|
415
415
|
def handle_object_type_extension obj, seed
|
|
416
416
|
if obj.implements_interfaces
|
|
417
|
-
obj.implements_interfaces.each { seed =
|
|
417
|
+
obj.implements_interfaces.each { |v| seed = v.fold(self, seed) }
|
|
418
418
|
end
|
|
419
419
|
if obj.directives
|
|
420
|
-
obj.directives.each { seed =
|
|
420
|
+
obj.directives.each { |v| seed = v.fold(self, seed) }
|
|
421
421
|
end
|
|
422
422
|
if obj.fields_definition
|
|
423
|
-
obj.fields_definition.each { seed =
|
|
423
|
+
obj.fields_definition.each { |v| seed = v.fold(self, seed) }
|
|
424
424
|
end
|
|
425
425
|
seed
|
|
426
426
|
end
|
|
@@ -432,9 +432,9 @@ module TinyGQL
|
|
|
432
432
|
end
|
|
433
433
|
def handle_directive_definition obj, seed
|
|
434
434
|
if obj.arguments_definition
|
|
435
|
-
obj.arguments_definition.each { seed =
|
|
435
|
+
obj.arguments_definition.each { |v| seed = v.fold(self, seed) }
|
|
436
436
|
end
|
|
437
|
-
obj.directive_locations.each { seed =
|
|
437
|
+
obj.directive_locations.each { |v| seed = v.fold(self, seed) }
|
|
438
438
|
seed
|
|
439
439
|
end
|
|
440
440
|
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
|
"""
|