Class: RubyLsp::HasStateMachine::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_lsp/has_state_machine/definition.rb

Constant Summary collapse

SERVER_ADDON_NAME =
"has_state_machine"

Instance Method Summary collapse

Constructor Details

#initialize(response_builder, _uri, node_context, dispatcher, index: nil, rails_client: nil) ⇒ Definition

Returns a new instance of Definition.



10
11
12
13
14
15
16
17
# File 'lib/ruby_lsp/has_state_machine/definition.rb', line 10

def initialize(response_builder, _uri, node_context, dispatcher, index: nil, rails_client: nil)
  @response_builder = response_builder
  @node_context = node_context
  @index = index
  @rails_client = rails_client

  dispatcher.register(self, :on_call_node_enter)
end

Instance Method Details

#on_call_node_enter(node) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ruby_lsp/has_state_machine/definition.rb', line 19

def on_call_node_enter(node)
  return unless current_target?(node)
  return unless resolved_model_name

  if object_call?(node)
    push_entries(constant_entries(resolved_model_name))
  elsif object_method_call?(node)
    method_name = message(node)
    entries = method_entries(resolved_model_name, method_name)
    entries = association_entries(resolved_model_name, method_name) if entries.empty?

    push_entries(entries)
  end
end