Class: RubyLsp::Itsi::HoverListener

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_lsp/itsi/addon.rb

Instance Method Summary collapse

Constructor Details

#initialize(response_builder, node_context, dispatcher) ⇒ HoverListener

Returns a new instance of HoverListener.



38
39
40
41
42
43
44
45
46
47
# File 'lib/ruby_lsp/itsi/addon.rb', line 38

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

  @options_by_name = ::Itsi::Server::Config::Option.subclasses.group_by(&:option_name).map{|k,v| [k,v.first]}.to_h
  @middlewares_by_name = ::Itsi::Server::Config::Middleware.subclasses.group_by(&:middleware_name).map{|k,v| [k,v.first]}.to_h
  # Register for call nodes for hover events
  dispatcher.register(self, :on_call_node_enter)
end

Instance Method Details

#on_call_node_enter(node) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/ruby_lsp/itsi/addon.rb', line 49

def on_call_node_enter(node)
  if (matched_class = @options_by_name[node.message.to_sym])
    @response_builder.push(
      matched_class.documentation,
      category: :documentation
    )
  elsif (matched_class = @middlewares_by_name[node.message.to_sym])
    @response_builder.push(
      matched_class.documentation,
      category: :documentation
    )
  end
end