Class: TypeSpecFromSerializers::SerializerVisitor
- Inherits:
-
Prism::Visitor
- Object
- Prism::Visitor
- TypeSpecFromSerializers::SerializerVisitor
- Defined in:
- lib/typespec_from_serializers/generator.rb
Overview
Internal: Prism visitor to extract serializer class names from AST
Instance Attribute Summary collapse
-
#serializer_names ⇒ Object
readonly
Returns the value of attribute serializer_names.
Instance Method Summary collapse
-
#initialize ⇒ SerializerVisitor
constructor
A new instance of SerializerVisitor.
-
#visit_call_node(node) ⇒ Object
Visit call nodes to find serializer usage patterns.
Constructor Details
#initialize ⇒ SerializerVisitor
1004 1005 1006 1007 |
# File 'lib/typespec_from_serializers/generator.rb', line 1004 def initialize super @serializer_names = [] end |
Instance Attribute Details
#serializer_names ⇒ Object (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 |