Class: RubyLsp::Ree::HoverListener

Inherits:
Object
  • Object
show all
Includes:
ReeLspUtils
Defined in:
lib/ruby_lsp/ruby_lsp_ree/listeners/hover_listener.rb

Constant Summary

Constants included from ReeLspUtils

ReeLspUtils::Entry

Instance Method Summary collapse

Methods included from ReeLspUtils

#camelize, #find_local_file_path, #get_range_for_fn_insert, #get_ree_type, #get_uri_path, #package_name_from_spec_uri, #package_name_from_uri, #package_path_from_uri, #parameter_name, #path_from_package_folder, #signature_params_from_node, #spec_relative_file_path_from_uri, #underscore

Constructor Details

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

Returns a new instance of HoverListener.



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/ruby_lsp/ruby_lsp_ree/listeners/hover_listener.rb', line 8

def initialize(response_builder, node_context, index, dispatcher)
  @response_builder = response_builder
  @handler = RubyLsp::Ree::HoverHandler.new(index, node_context)
  @ree_context = RubyLsp::Ree::ReeContext.new(node_context)

  dispatcher.register(
    self, 
    :on_call_node_enter,
    :on_symbol_node_enter,
    :on_string_node_enter, 
    :on_constant_read_node_enter
  )
end

Instance Method Details

#on_call_node_enter(node) ⇒ Object



34
35
36
37
38
39
# File 'lib/ruby_lsp/ruby_lsp_ree/listeners/hover_listener.rb', line 34

def on_call_node_enter(node)
  hover_items = @handler.get_ree_object_hover_items(node)
  put_items_into_response(hover_items)
rescue => e
  $stderr.puts("error in hover listener(on_call_node_enter): #{e.message} : #{e.backtrace.first}")
end

#on_constant_read_node_enter(node) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ruby_lsp/ruby_lsp_ree/listeners/hover_listener.rb', line 22

def on_constant_read_node_enter(node)
  # ree_object = @finder.search_classes(node.name.to_s).first

  # $stderr.puts("ree_object #{ree_object.inspect}")

  # return unless ree_object

  # $stderr.puts("ree_object comm #{ree_object.comments.to_s}")

  # @response_builder.push(ree_object.comments.to_s, category: :documentation)
end

#on_string_node_enter(node) ⇒ Object



41
42
43
44
45
46
47
48
49
# File 'lib/ruby_lsp/ruby_lsp_ree/listeners/hover_listener.rb', line 41

def on_string_node_enter(node)
  return unless @ree_context.is_error_definition?
  
  hover_items = @handler.get_error_locales_hover_items(node)
  
  put_items_into_response(hover_items)
rescue => e
  $stderr.puts("error in hover listener(on_string_node_enter): #{e.message} : #{e.backtrace.first}")
end

#on_symbol_node_enter(node) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/ruby_lsp/ruby_lsp_ree/listeners/hover_listener.rb', line 51

def on_symbol_node_enter(node)
  hover_items = if @ree_context.is_error_definition?
    @handler.get_error_code_hover_items(node)
  else
    @handler.get_linked_object_hover_items(node)
  end

  put_items_into_response(hover_items)
rescue => e
  $stderr.puts("error in hover listener(on_symbol_node_enter): #{e.message} : #{e.backtrace.first}")
end

#put_items_into_response(items) ⇒ Object



63
64
65
66
67
# File 'lib/ruby_lsp/ruby_lsp_ree/listeners/hover_listener.rb', line 63

def put_items_into_response(items)
  items.each do |item|
    @response_builder.push(item, category: :documentation)
  end
end