tinygql 0.1.4 → 0.2.0

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.
data/lib/tinygql/nodes.rb CHANGED
@@ -3,50 +3,62 @@ module TinyGQL
3
3
  class Node
4
4
  include Enumerable
5
5
 
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
- def scalar_type_extension?; false; end
46
- def interface_type_extension?; false; end
47
- def union_type_extension?; false; end
48
- def enum_type_extension?; false; end
49
- def input_object_type_extension?; false; end
6
+ # `pos` is the position of the _end_ of a token
7
+ attr_reader :pos
8
+
9
+ def initialize pos
10
+ @pos = pos
11
+ end
12
+
13
+ # Return the line of this node given `doc`
14
+ def line doc
15
+ doc[0, @pos].count("\n") + 1
16
+ end
17
+
18
+ def document?; false; end
19
+ def operation_definition?; false; end
20
+ def variable?; false; end
21
+ def named_type?; false; end
22
+ def not_null_type?; false; end
23
+ def list_type?; false; end
24
+ def variable_definition?; false; end
25
+ def value?; false; end
26
+ def argument?; false; end
27
+ def field?; false; end
28
+ def object_field?; false; end
29
+ def int_value?; false; end
30
+ def float_value?; false; end
31
+ def string_value?; false; end
32
+ def boolean_value?; false; end
33
+ def null_value?; false; end
34
+ def enum_value?; false; end
35
+ def list_value?; false; end
36
+ def object_value?; false; end
37
+ def directive?; false; end
38
+ def type_condition?; false; end
39
+ def inline_fragment?; false; end
40
+ def fragment_spread?; false; end
41
+ def fragment_definition?; false; end
42
+ def root_operation_type_definition?; false; end
43
+ def schema_definition?; false; end
44
+ def field_definition?; false; end
45
+ def input_value_definition?; false; end
46
+ def object_type_definition?; false; end
47
+ def interface_type_definition?; false; end
48
+ def union_type_definition?; false; end
49
+ def scalar_type_definition?; false; end
50
+ def enum_value_definition?; false; end
51
+ def enum_type_definition?; false; end
52
+ def input_object_type_definition?; false; end
53
+ def object_type_extension?; false; end
54
+ def executable_directive_location?; false; end
55
+ def type_system_directive_location?; false; end
56
+ def directive_definition?; false; end
57
+ def scalar_type_extension?; false; end
58
+ def interface_type_extension?; false; end
59
+ def union_type_extension?; false; end
60
+ def enum_type_extension?; false; end
61
+ def input_object_type_extension?; false; end
50
62
  def each(&blk)
51
63
  yield self
52
64
  children.each { |v| v.each(&blk) }
@@ -56,7 +68,8 @@ module TinyGQL
56
68
  class Document < Node
57
69
  attr_reader :definitions
58
70
 
59
- def initialize definitions
71
+ def initialize pos, definitions
72
+ super(pos)
60
73
  @definitions = definitions
61
74
  end
62
75
 
@@ -77,7 +90,8 @@ module TinyGQL
77
90
  class OperationDefinition < Node
78
91
  attr_reader :type, :name, :variable_definitions, :directives, :selection_set
79
92
 
80
- def initialize type, name, variable_definitions, directives, selection_set
93
+ def initialize pos, type, name, variable_definitions, directives, selection_set
94
+ super(pos)
81
95
  @type = type
82
96
  @name = name
83
97
  @variable_definitions = variable_definitions
@@ -102,7 +116,8 @@ module TinyGQL
102
116
  class Variable < Node
103
117
  attr_reader :name
104
118
 
105
- def initialize name
119
+ def initialize pos, name
120
+ super(pos)
106
121
  @name = name
107
122
  end
108
123
 
@@ -123,7 +138,8 @@ module TinyGQL
123
138
  class NamedType < Node
124
139
  attr_reader :name
125
140
 
126
- def initialize name
141
+ def initialize pos, name
142
+ super(pos)
127
143
  @name = name
128
144
  end
129
145
 
@@ -144,7 +160,8 @@ module TinyGQL
144
160
  class NotNullType < Node
145
161
  attr_reader :type
146
162
 
147
- def initialize type
163
+ def initialize pos, type
164
+ super(pos)
148
165
  @type = type
149
166
  end
150
167
 
@@ -165,7 +182,8 @@ module TinyGQL
165
182
  class ListType < Node
166
183
  attr_reader :type
167
184
 
168
- def initialize type
185
+ def initialize pos, type
186
+ super(pos)
169
187
  @type = type
170
188
  end
171
189
 
@@ -186,7 +204,8 @@ module TinyGQL
186
204
  class VariableDefinition < Node
187
205
  attr_reader :variable, :type, :default_value
188
206
 
189
- def initialize variable, type, default_value
207
+ def initialize pos, variable, type, default_value
208
+ super(pos)
190
209
  @variable = variable
191
210
  @type = type
192
211
  @default_value = default_value
@@ -209,7 +228,8 @@ module TinyGQL
209
228
  class Value < Node
210
229
  attr_reader :value
211
230
 
212
- def initialize value
231
+ def initialize pos, value
232
+ super(pos)
213
233
  @value = value
214
234
  end
215
235
 
@@ -230,7 +250,8 @@ module TinyGQL
230
250
  class Argument < Node
231
251
  attr_reader :name, :value
232
252
 
233
- def initialize name, value
253
+ def initialize pos, name, value
254
+ super(pos)
234
255
  @name = name
235
256
  @value = value
236
257
  end
@@ -252,7 +273,8 @@ module TinyGQL
252
273
  class Field < Node
253
274
  attr_reader :aliaz, :name, :arguments, :directives, :selection_set
254
275
 
255
- def initialize aliaz, name, arguments, directives, selection_set
276
+ def initialize pos, aliaz, name, arguments, directives, selection_set
277
+ super(pos)
256
278
  @aliaz = aliaz
257
279
  @name = name
258
280
  @arguments = arguments
@@ -277,7 +299,8 @@ module TinyGQL
277
299
  class ObjectField < Node
278
300
  attr_reader :name, :value
279
301
 
280
- def initialize name, value
302
+ def initialize pos, name, value
303
+ super(pos)
281
304
  @name = name
282
305
  @value = value
283
306
  end
@@ -390,7 +413,8 @@ module TinyGQL
390
413
  class ObjectValue < Node
391
414
  attr_reader :values
392
415
 
393
- def initialize values
416
+ def initialize pos, values
417
+ super(pos)
394
418
  @values = values
395
419
  end
396
420
 
@@ -411,7 +435,8 @@ module TinyGQL
411
435
  class Directive < Node
412
436
  attr_reader :name, :arguments
413
437
 
414
- def initialize name, arguments
438
+ def initialize pos, name, arguments
439
+ super(pos)
415
440
  @name = name
416
441
  @arguments = arguments
417
442
  end
@@ -433,7 +458,8 @@ module TinyGQL
433
458
  class TypeCondition < Node
434
459
  attr_reader :named_type
435
460
 
436
- def initialize named_type
461
+ def initialize pos, named_type
462
+ super(pos)
437
463
  @named_type = named_type
438
464
  end
439
465
 
@@ -454,7 +480,8 @@ module TinyGQL
454
480
  class InlineFragment < Node
455
481
  attr_reader :type_condition, :directives, :selection_set
456
482
 
457
- def initialize type_condition, directives, selection_set
483
+ def initialize pos, type_condition, directives, selection_set
484
+ super(pos)
458
485
  @type_condition = type_condition
459
486
  @directives = directives
460
487
  @selection_set = selection_set
@@ -477,7 +504,8 @@ module TinyGQL
477
504
  class FragmentSpread < Node
478
505
  attr_reader :fragment_name, :directives
479
506
 
480
- def initialize fragment_name, directives
507
+ def initialize pos, fragment_name, directives
508
+ super(pos)
481
509
  @fragment_name = fragment_name
482
510
  @directives = directives
483
511
  end
@@ -499,7 +527,8 @@ module TinyGQL
499
527
  class FragmentDefinition < Node
500
528
  attr_reader :fragment_name, :type_condition, :directives, :selection_set
501
529
 
502
- def initialize fragment_name, type_condition, directives, selection_set
530
+ def initialize pos, fragment_name, type_condition, directives, selection_set
531
+ super(pos)
503
532
  @fragment_name = fragment_name
504
533
  @type_condition = type_condition
505
534
  @directives = directives
@@ -523,7 +552,8 @@ module TinyGQL
523
552
  class RootOperationTypeDefinition < Node
524
553
  attr_reader :operation_type, :named_type
525
554
 
526
- def initialize operation_type, named_type
555
+ def initialize pos, operation_type, named_type
556
+ super(pos)
527
557
  @operation_type = operation_type
528
558
  @named_type = named_type
529
559
  end
@@ -545,7 +575,8 @@ module TinyGQL
545
575
  class SchemaDefinition < Node
546
576
  attr_reader :description, :directives, :root_operation_definitions
547
577
 
548
- def initialize description, directives, root_operation_definitions
578
+ def initialize pos, description, directives, root_operation_definitions
579
+ super(pos)
549
580
  @description = description
550
581
  @directives = directives
551
582
  @root_operation_definitions = root_operation_definitions
@@ -568,7 +599,8 @@ module TinyGQL
568
599
  class FieldDefinition < Node
569
600
  attr_reader :description, :name, :arguments_definition, :type, :directives
570
601
 
571
- def initialize description, name, arguments_definition, type, directives
602
+ def initialize pos, description, name, arguments_definition, type, directives
603
+ super(pos)
572
604
  @description = description
573
605
  @name = name
574
606
  @arguments_definition = arguments_definition
@@ -593,7 +625,8 @@ module TinyGQL
593
625
  class InputValueDefinition < Node
594
626
  attr_reader :description, :name, :type, :default_value, :directives
595
627
 
596
- def initialize description, name, type, default_value, directives
628
+ def initialize pos, description, name, type, default_value, directives
629
+ super(pos)
597
630
  @description = description
598
631
  @name = name
599
632
  @type = type
@@ -618,7 +651,8 @@ module TinyGQL
618
651
  class ObjectTypeDefinition < Node
619
652
  attr_reader :description, :name, :implements_interfaces, :directives, :fields_definition
620
653
 
621
- def initialize description, name, implements_interfaces, directives, fields_definition
654
+ def initialize pos, description, name, implements_interfaces, directives, fields_definition
655
+ super(pos)
622
656
  @description = description
623
657
  @name = name
624
658
  @implements_interfaces = implements_interfaces
@@ -643,7 +677,8 @@ module TinyGQL
643
677
  class InterfaceTypeDefinition < Node
644
678
  attr_reader :description, :name, :directives, :fields_definition
645
679
 
646
- def initialize description, name, directives, fields_definition
680
+ def initialize pos, description, name, directives, fields_definition
681
+ super(pos)
647
682
  @description = description
648
683
  @name = name
649
684
  @directives = directives
@@ -667,7 +702,8 @@ module TinyGQL
667
702
  class UnionTypeDefinition < Node
668
703
  attr_reader :description, :name, :directives, :union_member_types
669
704
 
670
- def initialize description, name, directives, union_member_types
705
+ def initialize pos, description, name, directives, union_member_types
706
+ super(pos)
671
707
  @description = description
672
708
  @name = name
673
709
  @directives = directives
@@ -691,7 +727,8 @@ module TinyGQL
691
727
  class ScalarTypeDefinition < Node
692
728
  attr_reader :description, :name, :directives
693
729
 
694
- def initialize description, name, directives
730
+ def initialize pos, description, name, directives
731
+ super(pos)
695
732
  @description = description
696
733
  @name = name
697
734
  @directives = directives
@@ -714,7 +751,8 @@ module TinyGQL
714
751
  class EnumValueDefinition < Node
715
752
  attr_reader :description, :enum_value, :directives
716
753
 
717
- def initialize description, enum_value, directives
754
+ def initialize pos, description, enum_value, directives
755
+ super(pos)
718
756
  @description = description
719
757
  @enum_value = enum_value
720
758
  @directives = directives
@@ -737,7 +775,8 @@ module TinyGQL
737
775
  class EnumTypeDefinition < Node
738
776
  attr_reader :description, :name, :directives, :enum_value_definition
739
777
 
740
- def initialize description, name, directives, enum_value_definition
778
+ def initialize pos, description, name, directives, enum_value_definition
779
+ super(pos)
741
780
  @description = description
742
781
  @name = name
743
782
  @directives = directives
@@ -761,7 +800,8 @@ module TinyGQL
761
800
  class InputObjectTypeDefinition < Node
762
801
  attr_reader :description, :name, :directives, :input_fields_definition
763
802
 
764
- def initialize description, name, directives, input_fields_definition
803
+ def initialize pos, description, name, directives, input_fields_definition
804
+ super(pos)
765
805
  @description = description
766
806
  @name = name
767
807
  @directives = directives
@@ -785,7 +825,8 @@ module TinyGQL
785
825
  class ObjectTypeExtension < Node
786
826
  attr_reader :name, :implements_interfaces, :directives, :fields_definition
787
827
 
788
- def initialize name, implements_interfaces, directives, fields_definition
828
+ def initialize pos, name, implements_interfaces, directives, fields_definition
829
+ super(pos)
789
830
  @name = name
790
831
  @implements_interfaces = implements_interfaces
791
832
  @directives = directives
@@ -809,7 +850,8 @@ module TinyGQL
809
850
  class ExecutableDirectiveLocation < Node
810
851
  attr_reader :name
811
852
 
812
- def initialize name
853
+ def initialize pos, name
854
+ super(pos)
813
855
  @name = name
814
856
  end
815
857
 
@@ -830,7 +872,8 @@ module TinyGQL
830
872
  class TypeSystemDirectiveLocation < Node
831
873
  attr_reader :name
832
874
 
833
- def initialize name
875
+ def initialize pos, name
876
+ super(pos)
834
877
  @name = name
835
878
  end
836
879
 
@@ -851,7 +894,8 @@ module TinyGQL
851
894
  class DirectiveDefinition < Node
852
895
  attr_reader :description, :name, :arguments_definition, :directive_locations
853
896
 
854
- def initialize description, name, arguments_definition, directive_locations
897
+ def initialize pos, description, name, arguments_definition, directive_locations
898
+ super(pos)
855
899
  @description = description
856
900
  @name = name
857
901
  @arguments_definition = arguments_definition
@@ -875,7 +919,8 @@ module TinyGQL
875
919
  class ScalarTypeExtension < Node
876
920
  attr_reader :name, :directives
877
921
 
878
- def initialize name, directives
922
+ def initialize pos, name, directives
923
+ super(pos)
879
924
  @name = name
880
925
  @directives = directives
881
926
  end
@@ -897,7 +942,8 @@ module TinyGQL
897
942
  class InterfaceTypeExtension < Node
898
943
  attr_reader :name, :implements_interfaces, :directives, :fields_definition
899
944
 
900
- def initialize name, implements_interfaces, directives, fields_definition
945
+ def initialize pos, name, implements_interfaces, directives, fields_definition
946
+ super(pos)
901
947
  @name = name
902
948
  @implements_interfaces = implements_interfaces
903
949
  @directives = directives
@@ -921,7 +967,8 @@ module TinyGQL
921
967
  class UnionTypeExtension < Node
922
968
  attr_reader :name, :directives, :union_member_types
923
969
 
924
- def initialize name, directives, union_member_types
970
+ def initialize pos, name, directives, union_member_types
971
+ super(pos)
925
972
  @name = name
926
973
  @directives = directives
927
974
  @union_member_types = union_member_types
@@ -944,7 +991,8 @@ module TinyGQL
944
991
  class EnumTypeExtension < Node
945
992
  attr_reader :name, :directives, :enum_value_definition
946
993
 
947
- def initialize name, directives, enum_value_definition
994
+ def initialize pos, name, directives, enum_value_definition
995
+ super(pos)
948
996
  @name = name
949
997
  @directives = directives
950
998
  @enum_value_definition = enum_value_definition
@@ -967,7 +1015,8 @@ module TinyGQL
967
1015
  class InputObjectTypeExtension < Node
968
1016
  attr_reader :name, :directives, :input_fields_definition
969
1017
 
970
- def initialize name, directives, input_fields_definition
1018
+ def initialize pos, name, directives, input_fields_definition
1019
+ super(pos)
971
1020
  @name = name
972
1021
  @directives = directives
973
1022
  @input_fields_definition = input_fields_definition
@@ -3,8 +3,20 @@ module TinyGQL
3
3
  class Node
4
4
  include Enumerable
5
5
 
6
+ # `pos` is the position of the _end_ of a token
7
+ attr_reader :pos
8
+
9
+ def initialize pos
10
+ @pos = pos
11
+ end
12
+
13
+ # Return the line of this node given `doc`
14
+ def line doc
15
+ doc[0, @pos].count("\n") + 1
16
+ end
17
+
6
18
  <%- nodes.each do |node| -%>
7
- def <%= node.human_name %>?; false; end
19
+ def <%= node.human_name %>?; false; end
8
20
  <%- end -%>
9
21
  def each(&blk)
10
22
  yield self
@@ -17,7 +29,8 @@ module TinyGQL
17
29
  <%- if node.fields.any? -%>
18
30
  attr_reader <%= node.fields.map { |v| ":" + v.name }.join(", ") %>
19
31
 
20
- def initialize <%= node.fields.map(&:name).join(", ") %>
32
+ def initialize <%= (["pos"] + node.fields.map(&:name)).join(", ") %>
33
+ super(pos)
21
34
  <%- node.fields.each do |field| -%>
22
35
  @<%= field.name %> = <%= field.name %>
23
36
  <%- end -%>