Class: Rigor::LanguageServer::HoverRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/rigor/language_server/hover_renderer.rb

Overview

Builds the LSP Hover.contents markdown body. Dispatches on the hovered Prism node class so each shape (method call, constant, local, ivar, literal) gets the most relevant type-aware presentation per docs/design/20260517-lsp-hover-completion.md.

Instance Method Summary collapse

Instance Method Details

#render(node:, type:, node_scope_lookup:) ⇒ Object

Parameters:

  • node_scope_lookup (#[])

    node-to-scope table built by ScopeIndexer.index. The renderer indexes into it to retrieve the receiver's narrow scope when specialising on CallNode. The lookup never returns nil (the indexer's Hash carries default_scope as its default value), so the renderer trusts the lookup result.



20
21
22
23
24
25
# File 'lib/rigor/language_server/hover_renderer.rb', line 20

def render(node:, type:, node_scope_lookup:)
  body = render_body(node, type, node_scope_lookup)
  result = { contents: { kind: "markdown", value: body } }
  result[:range] = lsp_range_for(node) if node.respond_to?(:location) && node.location
  result
end