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 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