Class: RailsOpenapiGen::Parsers::Jbuilder::Processors::ObjectProcessor

Inherits:
BaseProcessor
  • Object
show all
Defined in:
lib/rails-openapi-gen/parsers/jbuilder/processors/object_processor.rb

Constant Summary collapse

CallDetectors =

Alias for shorter reference to call detectors

RailsOpenapiGen::Parsers::Jbuilder::CallDetectors

Constants inherited from BaseProcessor

BaseProcessor::JbuilderParser

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseProcessor

#handler_missing, #initialize, #on_if, #partials, #properties

Constructor Details

This class inherits a constructor from RailsOpenapiGen::Parsers::Jbuilder::Processors::BaseProcessor

Class Method Details

.composite_processor_classObject

Lazy load CompositeProcessor to avoid circular dependency



11
12
13
# File 'lib/rails-openapi-gen/parsers/jbuilder/processors/object_processor.rb', line 11

def self.composite_processor_class
  RailsOpenapiGen::Parsers::Jbuilder::Processors::CompositeProcessor
end

Instance Method Details

#on_block(node) ⇒ void

This method returns an undefined value.

Processes block nodes for nested object blocks

Parameters:

  • node (Parser::AST::Node)

    Block node



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/rails-openapi-gen/parsers/jbuilder/processors/object_processor.rb', line 18

def on_block(node)
  send_node, args_node, = node.children
  receiver, method_name, = send_node.children

  if CallDetectors::JsonCallDetector.json_property?(receiver, method_name) && method_name != :array!
    # Check if this is a nested object block (no block arguments)
    if !args_node || args_node.type != :args || args_node.children.empty?
      # This is a nested object block like json.profile do
      process_nested_object_block(node, method_name.to_s)
    else
      super
    end
  else
    super
  end
end