Class: RailsOpenapiGen::Processors::BaseProcessor
- Inherits:
-
Object
- Object
- RailsOpenapiGen::Processors::BaseProcessor
- Defined in:
- lib/rails-openapi-gen/processors/base_processor.rb
Overview
Base class for all processors that convert AST nodes to output formats Implements visitor pattern for processing different node types
Direct Known Subclasses
Instance Method Summary collapse
-
#process(node) ⇒ Object
Process an AST node and return converted output.
-
#process_nodes(nodes) ⇒ Array<Object>
Process multiple nodes.
-
#should_process?(node) ⇒ Boolean
Check if node should be processed based on conditions.
-
#visit(node) ⇒ Object
Generic visit method for nodes that don't implement accept.
-
#visit_array(_node) ⇒ Object
Visit an array node.
-
#visit_object(_node) ⇒ Object
Visit an object node.
-
#visit_partial(_node) ⇒ Object
Visit a partial node.
-
#visit_property(_node) ⇒ Object
Visit a property node.
-
#visit_unknown(_node) ⇒ Object
Visit an unknown node type.
Instance Method Details
#process(node) ⇒ Object
Process an AST node and return converted output
10 11 12 13 14 15 16 17 18 |
# File 'lib/rails-openapi-gen/processors/base_processor.rb', line 10 def process(node) return nil unless node if node.respond_to?(:accept) node.accept(self) else visit(node) end end |
#process_nodes(nodes) ⇒ Array<Object>
Process multiple nodes
77 78 79 80 81 |
# File 'lib/rails-openapi-gen/processors/base_processor.rb', line 77 def process_nodes(nodes) return [] unless nodes.respond_to?(:map) nodes.map { |node| process(node) }.compact end |
#should_process?(node) ⇒ Boolean
Check if node should be processed based on conditions
86 87 88 89 90 91 |
# File 'lib/rails-openapi-gen/processors/base_processor.rb', line 86 def should_process?(node) return false unless node # Can be overridden in subclasses for custom filtering true end |
#visit(node) ⇒ Object
Generic visit method for nodes that don't implement accept
23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/rails-openapi-gen/processors/base_processor.rb', line 23 def visit(node) case node when RailsOpenapiGen::AstNodes::PropertyNode visit_property(node) when RailsOpenapiGen::AstNodes::ArrayNode visit_array(node) when RailsOpenapiGen::AstNodes::ObjectNode visit_object(node) when RailsOpenapiGen::AstNodes::PartialNode visit_partial(node) else visit_unknown(node) end end |
#visit_array(_node) ⇒ Object
Visit an array node
48 49 50 |
# File 'lib/rails-openapi-gen/processors/base_processor.rb', line 48 def visit_array(_node) raise NotImplementedError, "#{self.class} must implement #visit_array" end |
#visit_object(_node) ⇒ Object
Visit an object node
55 56 57 |
# File 'lib/rails-openapi-gen/processors/base_processor.rb', line 55 def visit_object(_node) raise NotImplementedError, "#{self.class} must implement #visit_object" end |
#visit_partial(_node) ⇒ Object
Visit a partial node
62 63 64 |
# File 'lib/rails-openapi-gen/processors/base_processor.rb', line 62 def visit_partial(_node) raise NotImplementedError, "#{self.class} must implement #visit_partial" end |
#visit_property(_node) ⇒ Object
Visit a property node
41 42 43 |
# File 'lib/rails-openapi-gen/processors/base_processor.rb', line 41 def visit_property(_node) raise NotImplementedError, "#{self.class} must implement #visit_property" end |
#visit_unknown(_node) ⇒ Object
Visit an unknown node type
69 70 71 72 |
# File 'lib/rails-openapi-gen/processors/base_processor.rb', line 69 def visit_unknown(_node) # Default implementation returns nil for unknown nodes nil end |