Class: RubyLsp::TypeGuessr::DslTypeRegistrar

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_lsp/type_guessr/dsl_type_registrar.rb

Overview

Pure orchestrator for DSL type registration. No framework logic, no cache logic — delegates everything to Adapters.

Instance Method Summary collapse

Constructor Details

#initialize(signature_registry:, code_index:, project_root:, adapters: nil) ⇒ DslTypeRegistrar

Returns a new instance of DslTypeRegistrar.



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

def initialize(signature_registry:, code_index:, project_root:, adapters: nil)
  @signature_registry = signature_registry
  @code_index = code_index
  @project_root = project_root
  @adapters = adapters || default_adapters
  @base_registered = false
  @log_callback = nil
end

Instance Method Details

#check_and_refresh(runner_client: nil) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/ruby_lsp/type_guessr/dsl_type_registrar.rb', line 39

def check_and_refresh(runner_client: nil)
  active_adapters.each do |adapter|
    next unless adapter.changed?

    adapter.refresh(
      runner_client: runner_client,
      signature_registry: @signature_registry,
      code_index: @code_index
    )
  end
end

#on_log(&block) ⇒ Object



19
20
21
22
# File 'lib/ruby_lsp/type_guessr/dsl_type_registrar.rb', line 19

def on_log(&block)
  @log_callback = block
  active_adapters.each { |a| a.on_log(&block) }
end

#register_all(runner_client: nil) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ruby_lsp/type_guessr/dsl_type_registrar.rb', line 24

def register_all(runner_client: nil)
  unless @base_registered
    active_adapters.each { |a| a.register_base_methods(signature_registry: @signature_registry) }
    @base_registered = true
  end

  active_adapters.each do |adapter|
    adapter.register_models(
      runner_client: runner_client,
      signature_registry: @signature_registry,
      code_index: @code_index
    )
  end
end