Class: RubyLsp::Mongoid::Hover

Inherits:
Object
  • Object
show all
Includes:
Requests::Support::Common
Defined in:
lib/ruby_lsp/ruby_lsp_mongoid/hover.rb

Constant Summary collapse

FIELD_DSL =
:field
ASSOCIATION_DSLS =
%i[
  embeds_many embeds_one embedded_in
  has_many has_one belongs_to has_and_belongs_to_many
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(response_builder, node_context, index, dispatcher) ⇒ Hover

Returns a new instance of Hover.



14
15
16
17
18
19
20
# File 'lib/ruby_lsp/ruby_lsp_mongoid/hover.rb', line 14

def initialize(response_builder, node_context, index, dispatcher)
  @response_builder = response_builder
  @node_context = node_context
  @index = index

  dispatcher.register(self, :on_symbol_node_enter)
end

Instance Method Details

#on_symbol_node_enter(node) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'lib/ruby_lsp/ruby_lsp_mongoid/hover.rb', line 22

def on_symbol_node_enter(node)
  call_node = @node_context.call_node
  return unless call_node.is_a?(Prism::CallNode)

  if call_node.name == FIELD_DSL
    handle_field(call_node)
  elsif ASSOCIATION_DSLS.include?(call_node.name)
    handle_association(call_node)
  end
end