@@ -270,15 +270,17 @@ def scalars
270270 "col: nil" ,
271271 "pos: nil" ,
272272 "filename: nil" ,
273- "source: nil" ,
273+ "source: nil"
274274 ]
275275
276+ IGNORED_MARSHALLING_KEYWORDS = [ :comment ]
277+
276278 def generate_initialize
277279 return if method_defined? ( :marshal_load , false ) # checking for `:initialize` doesn't work right
278280
279281 scalar_method_names = @scalar_methods
280282 # TODO: These probably should be scalar methods, but `types` returns an array
281- [ :types , :description ] . each do |extra_method |
283+ [ :types , :description , :comment ] . each do |extra_method |
282284 if method_defined? ( extra_method )
283285 scalar_method_names += [ extra_method ]
284286 end
@@ -307,6 +309,12 @@ def generate_initialize
307309 keywords = scalar_method_names . map { |m | "#{ m } : #{ m } " } +
308310 children_method_names . map { |m | "#{ m } : #{ m } " }
309311
312+ ignored_keywords = IGNORED_MARSHALLING_KEYWORDS . map do |keyword |
313+ "#{ keyword . to_s } : nil"
314+ end
315+
316+ marshalling_method_names = all_method_names - IGNORED_MARSHALLING_KEYWORDS
317+
310318 module_eval <<-RUBY , __FILE__ , __LINE__
311319 def initialize(#{ arguments . join ( ", " ) } )
312320 @line = line
@@ -317,20 +325,20 @@ def initialize(#{arguments.join(", ")})
317325 #{ assignments . join ( "\n " ) }
318326 end
319327
320- def self.from_a(filename, line, col, #{ all_method_names . join ( ", " ) } )
328+ def self.from_a(filename, line, col, #{ marshalling_method_names . join ( ", " ) } , #{ ignored_keywords . join ( ", " ) } )
321329 self.new(filename: filename, line: line, col: col, #{ keywords . join ( ", " ) } )
322330 end
323331
324332 def marshal_dump
325333 [
326334 line, col, # use methods here to force them to be calculated
327335 @filename,
328- #{ all_method_names . map { |n | "@#{ n } ," } . join }
336+ #{ marshalling_method_names . map { |n | "@#{ n } ," } . join }
329337 ]
330338 end
331339
332340 def marshal_load(values)
333- @line, @col, @filename #{ all_method_names . map { |n | ", @#{ n } " } . join } = values
341+ @line, @col, @filename #{ marshalling_method_names . map { |n | ", @#{ n } " } . join } = values
334342 end
335343 RUBY
336344 end
@@ -635,7 +643,7 @@ class SchemaExtension < AbstractNode
635643 end
636644
637645 class ScalarTypeDefinition < AbstractNode
638- attr_reader :description
646+ attr_reader :description , :comment
639647 scalar_methods :name
640648 children_methods ( {
641649 directives : GraphQL ::Language ::Nodes ::Directive ,
@@ -652,7 +660,7 @@ class ScalarTypeExtension < AbstractNode
652660 end
653661
654662 class InputValueDefinition < AbstractNode
655- attr_reader :description
663+ attr_reader :description , :comment
656664 scalar_methods :name , :type , :default_value
657665 children_methods ( {
658666 directives : GraphQL ::Language ::Nodes ::Directive ,
@@ -661,7 +669,7 @@ class InputValueDefinition < AbstractNode
661669 end
662670
663671 class FieldDefinition < AbstractNode
664- attr_reader :description
672+ attr_reader :description , :comment
665673 scalar_methods :name , :type
666674 children_methods ( {
667675 arguments : GraphQL ::Language ::Nodes ::InputValueDefinition ,
@@ -681,7 +689,7 @@ def merge(new_options)
681689 end
682690
683691 class ObjectTypeDefinition < AbstractNode
684- attr_reader :description
692+ attr_reader :description , :comment
685693 scalar_methods :name , :interfaces
686694 children_methods ( {
687695 directives : GraphQL ::Language ::Nodes ::Directive ,
@@ -700,7 +708,7 @@ class ObjectTypeExtension < AbstractNode
700708 end
701709
702710 class InterfaceTypeDefinition < AbstractNode
703- attr_reader :description
711+ attr_reader :description , :comment
704712 scalar_methods :name
705713 children_methods ( {
706714 interfaces : GraphQL ::Language ::Nodes ::TypeName ,
@@ -721,7 +729,7 @@ class InterfaceTypeExtension < AbstractNode
721729 end
722730
723731 class UnionTypeDefinition < AbstractNode
724- attr_reader :description , :types
732+ attr_reader :description , :comment , : types
725733 scalar_methods :name
726734 children_methods ( {
727735 directives : GraphQL ::Language ::Nodes ::Directive ,
@@ -739,7 +747,7 @@ class UnionTypeExtension < AbstractNode
739747 end
740748
741749 class EnumValueDefinition < AbstractNode
742- attr_reader :description
750+ attr_reader :description , :comment
743751 scalar_methods :name
744752 children_methods ( {
745753 directives : GraphQL ::Language ::Nodes ::Directive ,
@@ -748,7 +756,7 @@ class EnumValueDefinition < AbstractNode
748756 end
749757
750758 class EnumTypeDefinition < AbstractNode
751- attr_reader :description
759+ attr_reader :description , :comment
752760 scalar_methods :name
753761 children_methods ( {
754762 directives : GraphQL ::Language ::Nodes ::Directive ,
@@ -767,7 +775,7 @@ class EnumTypeExtension < AbstractNode
767775 end
768776
769777 class InputObjectTypeDefinition < AbstractNode
770- attr_reader :description
778+ attr_reader :description , :comment
771779 scalar_methods :name
772780 children_methods ( {
773781 directives : GraphQL ::Language ::Nodes ::Directive ,
0 commit comments