tinygql 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65e2106ae71f78971f49cbb5d1f718a0d17bcf7071d8cca8e15c7ca261e3deab
4
- data.tar.gz: 5e5799f7ee255b306928caaacde79f803af0d5672a36da7404097ff4bd518b77
3
+ metadata.gz: fbe2d05150ba3c665c9d4fe81ee632a870d4420776a7b77736d124fd7036081b
4
+ data.tar.gz: 3e3ef634a539c8345a0701c18a0d61fd158dacaca505ca17506f16e2287ed144
5
5
  SHA512:
6
- metadata.gz: 3e52942d40f93c438e5702bbca34b93d5a5156dd3ac939e0cdfb0459d37b163575f76e66c95a5873a2a0409c11d1e7df24bea02f8af91490ad34ed1b9e0b016c
7
- data.tar.gz: e4d9add489df9f33191d4684de2550a578ff333879a28e333666b2d4cfe20ff2fda98a1729be0aa7ddd934dd0cc62a01522911b50336e9382e161f04e6325ed9
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
- FLOAT = /#{INT}(#{FLOAT_DECIMAL}#{FLOAT_EXP}|#{FLOAT_DECIMAL}|#{FLOAT_EXP})/
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
- key = Literals.const_get(n)
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
- while true
110
- if @scan.eos?
111
- emit nil, nil
112
- return false
113
- end
114
-
115
- case
116
- when @scan.skip(IGNORE) then redo
117
- when str = @scan.scan(FLOAT) then return emit(:FLOAT, str)
118
- when str = @scan.scan(INT) then return emit(:INT, str)
119
- when str = @scan.scan(LIT) then return emit(LIT_NAME_LUT[str], str)
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
- def document? = false
7
- def operation_definition? = false
8
- def variable? = false
9
- def named_type? = false
10
- def not_null_type? = false
11
- def list_type? = false
12
- def variable_definition? = false
13
- def value? = false
14
- def argument? = false
15
- def field? = false
16
- def object_field? = false
17
- def int_value? = false
18
- def float_value? = false
19
- def string_value? = false
20
- def boolean_value? = false
21
- def null_value? = false
22
- def enum_value? = false
23
- def list_value? = false
24
- def object_value? = false
25
- def directive? = false
26
- def type_condition? = false
27
- def inline_fragment? = false
28
- def fragment_spread? = false
29
- def fragment_definition? = false
30
- def root_operation_type_definition? = false
31
- def schema_definition? = false
32
- def field_definition? = false
33
- def input_value_definition? = false
34
- def object_type_definition? = false
35
- def interface_type_definition? = false
36
- def union_type_definition? = false
37
- def scalar_type_definition? = false
38
- def enum_value_definition? = false
39
- def enum_type_definition? = false
40
- def input_object_type_definition? = false
41
- def object_type_extension? = false
42
- def executable_directive_location? = false
43
- def type_system_directive_location? = false
44
- def directive_definition? = false
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 { _1.each(&blk) }
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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? = true
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
@@ -4,7 +4,7 @@ module TinyGQL
4
4
  include Enumerable
5
5
 
6
6
  <%- nodes.each do |node| -%>
7
- def <%= node.human_name %>? = false
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 %>? = true
35
+ def <%= node.human_name %>?; true; end
36
36
 
37
37
  <%- if node.has_children? -%>
38
38
  def children
@@ -1,3 +1,3 @@
1
1
  module TinyGQL
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
@@ -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,23 +77,23 @@ 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
@@ -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 { _1.accept self }
104
+ obj.directives.each { |v| v.accept self }
105
105
  end
106
- obj.root_operation_definitions.each { _1.accept self }
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 { _1.accept self }
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 { _1.accept self }
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 { _1.accept self }
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 { _1.accept self }
128
+ obj.implements_interfaces.each { |v| v.accept self }
129
129
  end
130
130
  if obj.directives
131
- obj.directives.each { _1.accept self }
131
+ obj.directives.each { |v| v.accept self }
132
132
  end
133
133
  if obj.fields_definition
134
- obj.fields_definition.each { _1.accept self }
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 { _1.accept self }
139
+ obj.directives.each { |v| v.accept self }
140
140
  end
141
141
  if obj.fields_definition
142
- obj.fields_definition.each { _1.accept self }
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 { _1.accept self }
147
+ obj.directives.each { |v| v.accept self }
148
148
  end
149
149
  if obj.union_member_types
150
- obj.union_member_types.each { _1.accept self }
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 { _1.accept self }
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 { _1.accept self }
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 { _1.accept self }
166
+ obj.directives.each { |v| v.accept self }
167
167
  end
168
168
  if obj.enum_value_definition
169
- obj.enum_value_definition.each { _1.accept self }
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 { _1.accept self }
174
+ obj.directives.each { |v| v.accept self }
175
175
  end
176
176
  if obj.input_fields_definition
177
- obj.input_fields_definition.each { _1.accept self }
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 { _1.accept self }
182
+ obj.implements_interfaces.each { |v| v.accept self }
183
183
  end
184
184
  if obj.directives
185
- obj.directives.each { _1.accept self }
185
+ obj.directives.each { |v| v.accept self }
186
186
  end
187
187
  if obj.fields_definition
188
- obj.fields_definition.each { _1.accept self }
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 { _1.accept self }
197
+ obj.arguments_definition.each { |v| v.accept self }
198
198
  end
199
- obj.directive_locations.each { _1.accept self }
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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, seed) }
213
+ obj.directives.each { |v| seed = v.fold(self, seed) }
214
214
  end
215
- obj.selection_set.each { seed = _1.fold(self, 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 = _1.fold(self, seed) }
249
+ obj.arguments.each { |v| seed = v.fold(self, seed) }
250
250
  end
251
251
  if obj.directives
252
- obj.directives.each { seed = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, seed) }
301
+ obj.directives.each { |v| seed = v.fold(self, seed) }
302
302
  end
303
- obj.selection_set.each { seed = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, seed) }
317
+ obj.directives.each { |v| seed = v.fold(self, seed) }
318
318
  end
319
- obj.selection_set.each { seed = _1.fold(self, 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 = _1.fold(self, seed) }
329
+ obj.directives.each { |v| seed = v.fold(self, seed) }
330
330
  end
331
- obj.root_operation_definitions.each { seed = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, 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 = _1.fold(self, seed) }
435
+ obj.arguments_definition.each { |v| seed = v.fold(self, seed) }
436
436
  end
437
- obj.directive_locations.each { seed = _1.fold(self, 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
  """
metadata CHANGED
@@ -1,7 +1,7 @@
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.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson