Class: Yoda::Services::SignatureDiscovery
- Inherits:
-
Object
- Object
- Yoda::Services::SignatureDiscovery
- 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
- #evaluator ⇒ Evaluator readonly
- #location ⇒ Parsing::Location readonly
Class Method Summary collapse
Instance Method Summary collapse
- #argument_number ⇒ Integer?
-
#initialize(evaluator:, location:) ⇒ SignatureDiscovery
constructor
A new instance of SignatureDiscovery.
- #method_candidates ⇒ Array<Model::FunctionSignatures::Warpper>
- #valid? ⇒ Boolean
Constructor Details
#initialize(evaluator:, location:) ⇒ SignatureDiscovery
Returns a new instance of SignatureDiscovery.
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
#evaluator ⇒ Evaluator (readonly)
7 8 9 |
# File 'lib/yoda/services/signature_discovery.rb', line 7 def evaluator @evaluator end |
#location ⇒ Parsing::Location (readonly)
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
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_number ⇒ Integer?
42 43 44 |
# File 'lib/yoda/services/signature_discovery.rb', line 42 def argument_number nearest_send_node&.&.find_index { |node| node == nearest_argument_node } end |
#method_candidates ⇒ 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
31 32 33 |
# File 'lib/yoda/services/signature_discovery.rb', line 31 def valid? !!nearest_send_node end |