Class: Yoda::Services::SignatureDiscovery

Inherits:
Object
  • Object
show all
Defined in:
lib/yoda/services/signature_discovery.rb

Overview

SignatureDiscovery infers method candidates for the nearest send node and specify the number of index of these parameters. SignatureDiscovery shows help for the current parameter of method candidates.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(evaluator:, location:) ⇒ SignatureDiscovery

Returns a new instance of SignatureDiscovery.

Parameters:



26
27
28
29
# File 'lib/yoda/services/signature_discovery.rb', line 26

def initialize(evaluator:, location:)
  @evaluator = evaluator
  @location = location
end

Instance Attribute Details

#evaluatorEvaluator (readonly)

Returns:



7
8
9
# File 'lib/yoda/services/signature_discovery.rb', line 7

def evaluator
  @evaluator
end

#locationParsing::Location (readonly)

Returns:



10
11
12
# File 'lib/yoda/services/signature_discovery.rb', line 10

def location
  @location
end

Class Method Details

.from_source(environment:, source:, location:) ⇒ SignatureDiscovery

Parameters:

Returns:



17
18
19
20
21
22
# File 'lib/yoda/services/signature_discovery.rb', line 17

def self.from_source(environment:, source:, location:)
  new(
    evaluator: Evaluator.new(environment: environment, ast: Parsing.parse(source)),
    location: location
  )
end

Instance Method Details

#argument_numberInteger?

Returns:

  • (Integer, nil)


42
43
44
# File 'lib/yoda/services/signature_discovery.rb', line 42

def argument_number
  nearest_send_node&.expanded_arguments&.find_index { |node| node == nearest_argument_node }
end

#method_candidatesArray<Model::FunctionSignatures::Warpper>

Returns:

  • (Array<Model::FunctionSignatures::Warpper>)


36
37
38
39
# File 'lib/yoda/services/signature_discovery.rb', line 36

def method_candidates
  return [] unless valid?
  nearest_send_node_info.method_candidates
end

#valid?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/yoda/services/signature_discovery.rb', line 31

def valid?
  !!nearest_send_node
end