tinygql 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/tinygql/nodes.rb CHANGED
@@ -3,45 +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
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
45
62
  def each(&blk)
46
63
  yield self
47
64
  children.each { |v| v.each(&blk) }
@@ -51,7 +68,8 @@ module TinyGQL
51
68
  class Document < Node
52
69
  attr_reader :definitions
53
70
 
54
- def initialize definitions
71
+ def initialize pos, definitions
72
+ super(pos)
55
73
  @definitions = definitions
56
74
  end
57
75
 
@@ -72,7 +90,8 @@ module TinyGQL
72
90
  class OperationDefinition < Node
73
91
  attr_reader :type, :name, :variable_definitions, :directives, :selection_set
74
92
 
75
- def initialize type, name, variable_definitions, directives, selection_set
93
+ def initialize pos, type, name, variable_definitions, directives, selection_set
94
+ super(pos)
76
95
  @type = type
77
96
  @name = name
78
97
  @variable_definitions = variable_definitions
@@ -97,7 +116,8 @@ module TinyGQL
97
116
  class Variable < Node
98
117
  attr_reader :name
99
118
 
100
- def initialize name
119
+ def initialize pos, name
120
+ super(pos)
101
121
  @name = name
102
122
  end
103
123
 
@@ -118,7 +138,8 @@ module TinyGQL
118
138
  class NamedType < Node
119
139
  attr_reader :name
120
140
 
121
- def initialize name
141
+ def initialize pos, name
142
+ super(pos)
122
143
  @name = name
123
144
  end
124
145
 
@@ -139,7 +160,8 @@ module TinyGQL
139
160
  class NotNullType < Node
140
161
  attr_reader :type
141
162
 
142
- def initialize type
163
+ def initialize pos, type
164
+ super(pos)
143
165
  @type = type
144
166
  end
145
167
 
@@ -160,7 +182,8 @@ module TinyGQL
160
182
  class ListType < Node
161
183
  attr_reader :type
162
184
 
163
- def initialize type
185
+ def initialize pos, type
186
+ super(pos)
164
187
  @type = type
165
188
  end
166
189
 
@@ -181,7 +204,8 @@ module TinyGQL
181
204
  class VariableDefinition < Node
182
205
  attr_reader :variable, :type, :default_value
183
206
 
184
- def initialize variable, type, default_value
207
+ def initialize pos, variable, type, default_value
208
+ super(pos)
185
209
  @variable = variable
186
210
  @type = type
187
211
  @default_value = default_value
@@ -204,7 +228,8 @@ module TinyGQL
204
228
  class Value < Node
205
229
  attr_reader :value
206
230
 
207
- def initialize value
231
+ def initialize pos, value
232
+ super(pos)
208
233
  @value = value
209
234
  end
210
235
 
@@ -225,7 +250,8 @@ module TinyGQL
225
250
  class Argument < Node
226
251
  attr_reader :name, :value
227
252
 
228
- def initialize name, value
253
+ def initialize pos, name, value
254
+ super(pos)
229
255
  @name = name
230
256
  @value = value
231
257
  end
@@ -247,7 +273,8 @@ module TinyGQL
247
273
  class Field < Node
248
274
  attr_reader :aliaz, :name, :arguments, :directives, :selection_set
249
275
 
250
- def initialize aliaz, name, arguments, directives, selection_set
276
+ def initialize pos, aliaz, name, arguments, directives, selection_set
277
+ super(pos)
251
278
  @aliaz = aliaz
252
279
  @name = name
253
280
  @arguments = arguments
@@ -272,7 +299,8 @@ module TinyGQL
272
299
  class ObjectField < Node
273
300
  attr_reader :name, :value
274
301
 
275
- def initialize name, value
302
+ def initialize pos, name, value
303
+ super(pos)
276
304
  @name = name
277
305
  @value = value
278
306
  end
@@ -385,7 +413,8 @@ module TinyGQL
385
413
  class ObjectValue < Node
386
414
  attr_reader :values
387
415
 
388
- def initialize values
416
+ def initialize pos, values
417
+ super(pos)
389
418
  @values = values
390
419
  end
391
420
 
@@ -406,7 +435,8 @@ module TinyGQL
406
435
  class Directive < Node
407
436
  attr_reader :name, :arguments
408
437
 
409
- def initialize name, arguments
438
+ def initialize pos, name, arguments
439
+ super(pos)
410
440
  @name = name
411
441
  @arguments = arguments
412
442
  end
@@ -422,13 +452,14 @@ module TinyGQL
422
452
  def directive?; true; end
423
453
 
424
454
  def children
425
- ary = []; ary.concat(arguments); ary
455
+ ary = []; ary.concat(arguments) if arguments; ary
426
456
  end
427
457
  end
428
458
  class TypeCondition < Node
429
459
  attr_reader :named_type
430
460
 
431
- def initialize named_type
461
+ def initialize pos, named_type
462
+ super(pos)
432
463
  @named_type = named_type
433
464
  end
434
465
 
@@ -449,7 +480,8 @@ module TinyGQL
449
480
  class InlineFragment < Node
450
481
  attr_reader :type_condition, :directives, :selection_set
451
482
 
452
- def initialize type_condition, directives, selection_set
483
+ def initialize pos, type_condition, directives, selection_set
484
+ super(pos)
453
485
  @type_condition = type_condition
454
486
  @directives = directives
455
487
  @selection_set = selection_set
@@ -472,7 +504,8 @@ module TinyGQL
472
504
  class FragmentSpread < Node
473
505
  attr_reader :fragment_name, :directives
474
506
 
475
- def initialize fragment_name, directives
507
+ def initialize pos, fragment_name, directives
508
+ super(pos)
476
509
  @fragment_name = fragment_name
477
510
  @directives = directives
478
511
  end
@@ -488,13 +521,14 @@ module TinyGQL
488
521
  def fragment_spread?; true; end
489
522
 
490
523
  def children
491
- ary = []; ary << fragment_name; ary.concat(directives) if directives; ary
524
+ ary = []; ary.concat(directives) if directives; ary
492
525
  end
493
526
  end
494
527
  class FragmentDefinition < Node
495
528
  attr_reader :fragment_name, :type_condition, :directives, :selection_set
496
529
 
497
- def initialize fragment_name, type_condition, directives, selection_set
530
+ def initialize pos, fragment_name, type_condition, directives, selection_set
531
+ super(pos)
498
532
  @fragment_name = fragment_name
499
533
  @type_condition = type_condition
500
534
  @directives = directives
@@ -512,13 +546,14 @@ module TinyGQL
512
546
  def fragment_definition?; true; end
513
547
 
514
548
  def children
515
- ary = []; ary << fragment_name; ary << type_condition; ary.concat(directives) if directives; ary.concat(selection_set); ary
549
+ ary = []; ary << type_condition; ary.concat(directives) if directives; ary.concat(selection_set); ary
516
550
  end
517
551
  end
518
552
  class RootOperationTypeDefinition < Node
519
553
  attr_reader :operation_type, :named_type
520
554
 
521
- def initialize operation_type, named_type
555
+ def initialize pos, operation_type, named_type
556
+ super(pos)
522
557
  @operation_type = operation_type
523
558
  @named_type = named_type
524
559
  end
@@ -534,13 +569,14 @@ module TinyGQL
534
569
  def root_operation_type_definition?; true; end
535
570
 
536
571
  def children
537
- ary = []; ary << operation_type; ary << named_type; ary
572
+ ary = []; ary << named_type; ary
538
573
  end
539
574
  end
540
575
  class SchemaDefinition < Node
541
576
  attr_reader :description, :directives, :root_operation_definitions
542
577
 
543
- def initialize description, directives, root_operation_definitions
578
+ def initialize pos, description, directives, root_operation_definitions
579
+ super(pos)
544
580
  @description = description
545
581
  @directives = directives
546
582
  @root_operation_definitions = root_operation_definitions
@@ -557,13 +593,14 @@ module TinyGQL
557
593
  def schema_definition?; true; end
558
594
 
559
595
  def children
560
- ary = []; ary.concat(directives) if directives; ary.concat(root_operation_definitions); ary
596
+ ary = []; ary << description if description; ary.concat(directives) if directives; ary.concat(root_operation_definitions); ary
561
597
  end
562
598
  end
563
599
  class FieldDefinition < Node
564
600
  attr_reader :description, :name, :arguments_definition, :type, :directives
565
601
 
566
- def initialize description, name, arguments_definition, type, directives
602
+ def initialize pos, description, name, arguments_definition, type, directives
603
+ super(pos)
567
604
  @description = description
568
605
  @name = name
569
606
  @arguments_definition = arguments_definition
@@ -582,13 +619,14 @@ module TinyGQL
582
619
  def field_definition?; true; end
583
620
 
584
621
  def children
585
- ary = []; ary.concat(arguments_definition) if arguments_definition; ary << type; ary.concat(directives) if directives; ary
622
+ ary = []; ary << description if description; ary.concat(arguments_definition) if arguments_definition; ary << type; ary.concat(directives) if directives; ary
586
623
  end
587
624
  end
588
625
  class InputValueDefinition < Node
589
626
  attr_reader :description, :name, :type, :default_value, :directives
590
627
 
591
- def initialize description, name, type, default_value, directives
628
+ def initialize pos, description, name, type, default_value, directives
629
+ super(pos)
592
630
  @description = description
593
631
  @name = name
594
632
  @type = type
@@ -607,13 +645,14 @@ module TinyGQL
607
645
  def input_value_definition?; true; end
608
646
 
609
647
  def children
610
- ary = []; ary << type; ary << default_value if default_value; ary.concat(directives) if directives; ary
648
+ ary = []; ary << description if description; ary << type; ary << default_value if default_value; ary.concat(directives) if directives; ary
611
649
  end
612
650
  end
613
651
  class ObjectTypeDefinition < Node
614
652
  attr_reader :description, :name, :implements_interfaces, :directives, :fields_definition
615
653
 
616
- def initialize description, name, implements_interfaces, directives, fields_definition
654
+ def initialize pos, description, name, implements_interfaces, directives, fields_definition
655
+ super(pos)
617
656
  @description = description
618
657
  @name = name
619
658
  @implements_interfaces = implements_interfaces
@@ -632,13 +671,14 @@ module TinyGQL
632
671
  def object_type_definition?; true; end
633
672
 
634
673
  def children
635
- ary = []; ary.concat(implements_interfaces) if implements_interfaces; ary.concat(directives) if directives; ary.concat(fields_definition) if fields_definition; ary
674
+ ary = []; ary << description if description; ary.concat(implements_interfaces) if implements_interfaces; ary.concat(directives) if directives; ary.concat(fields_definition) if fields_definition; ary
636
675
  end
637
676
  end
638
677
  class InterfaceTypeDefinition < Node
639
678
  attr_reader :description, :name, :directives, :fields_definition
640
679
 
641
- def initialize description, name, directives, fields_definition
680
+ def initialize pos, description, name, directives, fields_definition
681
+ super(pos)
642
682
  @description = description
643
683
  @name = name
644
684
  @directives = directives
@@ -656,13 +696,14 @@ module TinyGQL
656
696
  def interface_type_definition?; true; end
657
697
 
658
698
  def children
659
- ary = []; ary.concat(directives) if directives; ary.concat(fields_definition) if fields_definition; ary
699
+ ary = []; ary << description if description; ary.concat(directives) if directives; ary.concat(fields_definition) if fields_definition; ary
660
700
  end
661
701
  end
662
702
  class UnionTypeDefinition < Node
663
703
  attr_reader :description, :name, :directives, :union_member_types
664
704
 
665
- def initialize description, name, directives, union_member_types
705
+ def initialize pos, description, name, directives, union_member_types
706
+ super(pos)
666
707
  @description = description
667
708
  @name = name
668
709
  @directives = directives
@@ -680,13 +721,14 @@ module TinyGQL
680
721
  def union_type_definition?; true; end
681
722
 
682
723
  def children
683
- ary = []; ary.concat(directives) if directives; ary.concat(union_member_types) if union_member_types; ary
724
+ ary = []; ary << description if description; ary.concat(directives) if directives; ary.concat(union_member_types) if union_member_types; ary
684
725
  end
685
726
  end
686
727
  class ScalarTypeDefinition < Node
687
728
  attr_reader :description, :name, :directives
688
729
 
689
- def initialize description, name, directives
730
+ def initialize pos, description, name, directives
731
+ super(pos)
690
732
  @description = description
691
733
  @name = name
692
734
  @directives = directives
@@ -703,13 +745,14 @@ module TinyGQL
703
745
  def scalar_type_definition?; true; end
704
746
 
705
747
  def children
706
- ary = []; ary.concat(directives) if directives; ary
748
+ ary = []; ary << description if description; ary.concat(directives) if directives; ary
707
749
  end
708
750
  end
709
751
  class EnumValueDefinition < Node
710
752
  attr_reader :description, :enum_value, :directives
711
753
 
712
- def initialize description, enum_value, directives
754
+ def initialize pos, description, enum_value, directives
755
+ super(pos)
713
756
  @description = description
714
757
  @enum_value = enum_value
715
758
  @directives = directives
@@ -726,13 +769,14 @@ module TinyGQL
726
769
  def enum_value_definition?; true; end
727
770
 
728
771
  def children
729
- ary = []; ary << enum_value; ary.concat(directives) if directives; ary
772
+ ary = []; ary << description if description; ary << enum_value; ary.concat(directives) if directives; ary
730
773
  end
731
774
  end
732
775
  class EnumTypeDefinition < Node
733
776
  attr_reader :description, :name, :directives, :enum_value_definition
734
777
 
735
- def initialize description, name, directives, enum_value_definition
778
+ def initialize pos, description, name, directives, enum_value_definition
779
+ super(pos)
736
780
  @description = description
737
781
  @name = name
738
782
  @directives = directives
@@ -750,13 +794,14 @@ module TinyGQL
750
794
  def enum_type_definition?; true; end
751
795
 
752
796
  def children
753
- ary = []; ary.concat(directives) if directives; ary.concat(enum_value_definition) if enum_value_definition; ary
797
+ ary = []; ary << description if description; ary.concat(directives) if directives; ary.concat(enum_value_definition) if enum_value_definition; ary
754
798
  end
755
799
  end
756
800
  class InputObjectTypeDefinition < Node
757
801
  attr_reader :description, :name, :directives, :input_fields_definition
758
802
 
759
- def initialize description, name, directives, input_fields_definition
803
+ def initialize pos, description, name, directives, input_fields_definition
804
+ super(pos)
760
805
  @description = description
761
806
  @name = name
762
807
  @directives = directives
@@ -774,13 +819,14 @@ module TinyGQL
774
819
  def input_object_type_definition?; true; end
775
820
 
776
821
  def children
777
- ary = []; ary.concat(directives) if directives; ary.concat(input_fields_definition) if input_fields_definition; ary
822
+ ary = []; ary << description if description; ary.concat(directives) if directives; ary.concat(input_fields_definition) if input_fields_definition; ary
778
823
  end
779
824
  end
780
825
  class ObjectTypeExtension < Node
781
826
  attr_reader :name, :implements_interfaces, :directives, :fields_definition
782
827
 
783
- def initialize name, implements_interfaces, directives, fields_definition
828
+ def initialize pos, name, implements_interfaces, directives, fields_definition
829
+ super(pos)
784
830
  @name = name
785
831
  @implements_interfaces = implements_interfaces
786
832
  @directives = directives
@@ -804,7 +850,8 @@ module TinyGQL
804
850
  class ExecutableDirectiveLocation < Node
805
851
  attr_reader :name
806
852
 
807
- def initialize name
853
+ def initialize pos, name
854
+ super(pos)
808
855
  @name = name
809
856
  end
810
857
 
@@ -825,7 +872,8 @@ module TinyGQL
825
872
  class TypeSystemDirectiveLocation < Node
826
873
  attr_reader :name
827
874
 
828
- def initialize name
875
+ def initialize pos, name
876
+ super(pos)
829
877
  @name = name
830
878
  end
831
879
 
@@ -846,7 +894,8 @@ module TinyGQL
846
894
  class DirectiveDefinition < Node
847
895
  attr_reader :description, :name, :arguments_definition, :directive_locations
848
896
 
849
- def initialize description, name, arguments_definition, directive_locations
897
+ def initialize pos, description, name, arguments_definition, directive_locations
898
+ super(pos)
850
899
  @description = description
851
900
  @name = name
852
901
  @arguments_definition = arguments_definition
@@ -864,7 +913,127 @@ module TinyGQL
864
913
  def directive_definition?; true; end
865
914
 
866
915
  def children
867
- ary = []; ary.concat(arguments_definition) if arguments_definition; ary.concat(directive_locations); ary
916
+ ary = []; ary << description if description; ary.concat(arguments_definition) if arguments_definition; ary.concat(directive_locations); ary
917
+ end
918
+ end
919
+ class ScalarTypeExtension < Node
920
+ attr_reader :name, :directives
921
+
922
+ def initialize pos, name, directives
923
+ super(pos)
924
+ @name = name
925
+ @directives = directives
926
+ end
927
+
928
+ def accept viz
929
+ viz.handle_scalar_type_extension self
930
+ end
931
+
932
+ def fold viz, seed
933
+ viz.handle_scalar_type_extension self, seed
934
+ end
935
+
936
+ def scalar_type_extension?; true; end
937
+
938
+ def children
939
+ ary = []; ary.concat(directives) if directives; ary
940
+ end
941
+ end
942
+ class InterfaceTypeExtension < Node
943
+ attr_reader :name, :implements_interfaces, :directives, :fields_definition
944
+
945
+ def initialize pos, name, implements_interfaces, directives, fields_definition
946
+ super(pos)
947
+ @name = name
948
+ @implements_interfaces = implements_interfaces
949
+ @directives = directives
950
+ @fields_definition = fields_definition
951
+ end
952
+
953
+ def accept viz
954
+ viz.handle_interface_type_extension self
955
+ end
956
+
957
+ def fold viz, seed
958
+ viz.handle_interface_type_extension self, seed
959
+ end
960
+
961
+ def interface_type_extension?; true; end
962
+
963
+ def children
964
+ ary = []; ary.concat(implements_interfaces) if implements_interfaces; ary.concat(directives) if directives; ary.concat(fields_definition) if fields_definition; ary
965
+ end
966
+ end
967
+ class UnionTypeExtension < Node
968
+ attr_reader :name, :directives, :union_member_types
969
+
970
+ def initialize pos, name, directives, union_member_types
971
+ super(pos)
972
+ @name = name
973
+ @directives = directives
974
+ @union_member_types = union_member_types
975
+ end
976
+
977
+ def accept viz
978
+ viz.handle_union_type_extension self
979
+ end
980
+
981
+ def fold viz, seed
982
+ viz.handle_union_type_extension self, seed
983
+ end
984
+
985
+ def union_type_extension?; true; end
986
+
987
+ def children
988
+ ary = []; ary.concat(directives) if directives; ary.concat(union_member_types) if union_member_types; ary
989
+ end
990
+ end
991
+ class EnumTypeExtension < Node
992
+ attr_reader :name, :directives, :enum_value_definition
993
+
994
+ def initialize pos, name, directives, enum_value_definition
995
+ super(pos)
996
+ @name = name
997
+ @directives = directives
998
+ @enum_value_definition = enum_value_definition
999
+ end
1000
+
1001
+ def accept viz
1002
+ viz.handle_enum_type_extension self
1003
+ end
1004
+
1005
+ def fold viz, seed
1006
+ viz.handle_enum_type_extension self, seed
1007
+ end
1008
+
1009
+ def enum_type_extension?; true; end
1010
+
1011
+ def children
1012
+ ary = []; ary.concat(directives) if directives; ary.concat(enum_value_definition) if enum_value_definition; ary
1013
+ end
1014
+ end
1015
+ class InputObjectTypeExtension < Node
1016
+ attr_reader :name, :directives, :input_fields_definition
1017
+
1018
+ def initialize pos, name, directives, input_fields_definition
1019
+ super(pos)
1020
+ @name = name
1021
+ @directives = directives
1022
+ @input_fields_definition = input_fields_definition
1023
+ end
1024
+
1025
+ def accept viz
1026
+ viz.handle_input_object_type_extension self
1027
+ end
1028
+
1029
+ def fold viz, seed
1030
+ viz.handle_input_object_type_extension self, seed
1031
+ end
1032
+
1033
+ def input_object_type_extension?; true; end
1034
+
1035
+ def children
1036
+ ary = []; ary.concat(directives) if directives; ary.concat(input_fields_definition) if input_fields_definition; ary
868
1037
  end
869
1038
  end
870
1039
  end
@@ -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 -%>