Class: RDoc::Parser::PrismRuby::RDocVisitor::MethodSignatureVisitor

Inherits:
Prism::Visitor
  • Object
show all
Defined in:
lib/rdoc/parser/prism_ruby.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMethodSignatureVisitor

Returns a new instance of MethodSignatureVisitor.



1088
1089
1090
1091
1092
# File 'lib/rdoc/parser/prism_ruby.rb', line 1088

def initialize
  @params = nil
  @calls_super = false
  @yields = []
end

Instance Attribute Details

#calls_superObject (readonly)

Returns the value of attribute calls_super.



1086
1087
1088
# File 'lib/rdoc/parser/prism_ruby.rb', line 1086

def calls_super
  @calls_super
end

#paramsObject (readonly)

Returns the value of attribute params.



1086
1087
1088
# File 'lib/rdoc/parser/prism_ruby.rb', line 1086

def params
  @params
end

#yieldsObject (readonly)

Returns the value of attribute yields.



1086
1087
1088
# File 'lib/rdoc/parser/prism_ruby.rb', line 1086

def yields
  @yields
end

Class Method Details

.scan_signature(def_node) ⇒ Object



1077
1078
1079
1080
1081
1082
1083
# File 'lib/rdoc/parser/prism_ruby.rb', line 1077

def scan_signature(def_node)
  visitor = new
  def_node.body&.accept(visitor)
  params = "(#{def_node.parameters&.slice})"
  block_params = visitor.yields.first
  [params, block_params, visitor.calls_super]
end

Instance Method Details

#visit_def_node(node) ⇒ Object



1094
1095
1096
# File 'lib/rdoc/parser/prism_ruby.rb', line 1094

def visit_def_node(node)
  # stop traverse inside nested def
end

#visit_forwarding_super_node(node) ⇒ Object



1107
1108
1109
# File 'lib/rdoc/parser/prism_ruby.rb', line 1107

def visit_forwarding_super_node(node)
  @calls_super = true
end

#visit_super_node(node) ⇒ Object



1102
1103
1104
1105
# File 'lib/rdoc/parser/prism_ruby.rb', line 1102

def visit_super_node(node)
  @calls_super = true
  super
end

#visit_yield_node(node) ⇒ Object



1098
1099
1100
# File 'lib/rdoc/parser/prism_ruby.rb', line 1098

def visit_yield_node(node)
  @yields << (node.arguments&.slice || '')
end