Class: TypeSpecFromSerializers::SerializerVisitor

Inherits:
Prism::Visitor
  • Object
show all
Defined in:
lib/typespec_from_serializers/generator.rb

Overview

Internal: Prism visitor to extract serializer class names from AST

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSerializerVisitor



1004
1005
1006
1007
# File 'lib/typespec_from_serializers/generator.rb', line 1004

def initialize
  super
  @serializer_names = []
end

Instance Attribute Details

#serializer_namesObject (readonly)

Returns the value of attribute serializer_names.



1002
1003
1004
# File 'lib/typespec_from_serializers/generator.rb', line 1002

def serializer_names
  @serializer_names
end

Instance Method Details

#visit_call_node(node) ⇒ Object

Visit call nodes to find serializer usage patterns



1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
# File 'lib/typespec_from_serializers/generator.rb', line 1010

def visit_call_node(node)
  # Pattern 1: render(..., serializer: FooSerializer)
  if node.name.to_s.in?(%w[render render_page])
    extract_serializer_from_render(node)
  end

  # Pattern 2: FooSerializer.one(...) or FooSerializer.many(...)
  if node.name.to_s.in?(%w[one many]) && node.receiver
    extract_serializer_from_class_method(node)
  end

  super
end