Class: RubyLsp::Ree::ConstObjectsParser

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_lsp/ruby_lsp_ree/parsing/body_parsers/const_objects_parser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parsed_doc) ⇒ ConstObjectsParser

Returns a new instance of ConstObjectsParser.



6
7
8
9
# File 'lib/ruby_lsp/ruby_lsp_ree/parsing/body_parsers/const_objects_parser.rb', line 6

def initialize(parsed_doc)
  @parsed_doc = parsed_doc
  @body_parser = RubyLsp::Ree::BodyObjectsParser.new(:const_object)
end

Instance Attribute Details

#parsed_docObject (readonly)

Returns the value of attribute parsed_doc.



4
5
6
# File 'lib/ruby_lsp/ruby_lsp_ree/parsing/body_parsers/const_objects_parser.rb', line 4

def parsed_doc
  @parsed_doc
end

Instance Method Details

#class_const_objectsObject



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/ruby_lsp/ruby_lsp_ree/parsing/body_parsers/const_objects_parser.rb', line 11

def class_const_objects
  const_objects = []
  return unless parsed_doc.has_body?

  const_objects += @body_parser.parse(parsed_doc.class_node.body.body)

  parsed_doc.parse_instance_methods
  parsed_doc.doc_instance_methods.each do |doc_instance_method|
    const_objects += method_const_objects(doc_instance_method)
  end

  const_objects
end

#method_const_objects(method_object) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/ruby_lsp/ruby_lsp_ree/parsing/body_parsers/const_objects_parser.rb', line 25

def method_const_objects(method_object)
  method_body = method_object.full_method_body
  return [] unless method_body

  const_objects = @body_parser.parse([method_body])

  if method_object.has_contract?
    const_objects += @body_parser.parse([method_object.contract_node])
  end

  const_objects
end