Class: Chiridion::Engine::GeneratedRbsLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/chiridion/engine/generated_rbs_loader.rb

Overview

Comprehensive loader for RBS::Inline-generated .rbs files.

Unlike the simpler RbsLoader, this extracts ALL available information from generated RBS files:

  • Method signatures with parameter types and return types

  • Instance variable declarations (@name: Type)

  • Attribute declarations (attr_reader name: Type)

  • Type aliases (type name = definition)

  • Class/module structure with comments

The generated RBS files are authoritative - they’ve been properly parsed by rbs-inline from the source annotations. We just need to read them.

Examples:

loader = GeneratedRbsLoader.new(verbose: true, logger: logger)
data = loader.load("sig/generated")
# => { signatures: {...}, ivars: {...}, attrs: {...}, type_aliases: {...} }

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Constructor Details

#initialize(verbose: false, logger: nil) ⇒ GeneratedRbsLoader

Returns a new instance of GeneratedRbsLoader.



34
35
36
37
# File 'lib/chiridion/engine/generated_rbs_loader.rb', line 34

def initialize(verbose: false, logger: nil)
  @verbose = verbose
  @logger  = logger
end

Instance Method Details

#load(rbs_dir) ⇒ Result

Load all data from generated RBS directory.

Parameters:

  • rbs_dir (String)

    Path to generated RBS directory (e.g., “sig/generated”)

Returns:

  • (Result)

    All extracted data



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/chiridion/engine/generated_rbs_loader.rb', line 43

def load(rbs_dir)
  signatures   = {}
  ivars        = {}
  attrs        = {}
  type_aliases = {}
  overloads    = {}

  return empty_result unless rbs_dir && Dir.exist?(rbs_dir)

  rbs_files = Dir.glob(File.join(rbs_dir, "**/*.rbs"))
  rbs_files.each do |file|
    parse_file(file, signatures, ivars, attrs, type_aliases, overloads)
  end

  log_stats(signatures, ivars, attrs, type_aliases) if @verbose

  Result.new(
    signatures:   signatures,
    ivars:        ivars,
    attrs:        attrs,
    type_aliases: type_aliases,
    overloads:    overloads
  )
end