Class: Chiridion::Engine::RbsTypeAliasLoader
- Inherits:
-
Object
- Object
- Chiridion::Engine::RbsTypeAliasLoader
- Defined in:
- lib/chiridion/engine/rbs_type_alias_loader.rb
Overview
Extracts RBS type alias definitions from generated .rbs files.
Reads type aliases from RBS files (typically in sig/generated/) which have already been properly parsed by RBS::Inline. This is more reliable than re-parsing @rbs! blocks ourselves.
RBS format is straightforward:
module Namespace
# Description comment
type name = definition
end
Instance Method Summary collapse
-
#initialize(verbose, logger, rbs_dir: nil) ⇒ RbsTypeAliasLoader
constructor
A new instance of RbsTypeAliasLoader.
-
#load ⇒ Hash{String => Array<Hash>}
Extract type aliases from generated RBS files.
Constructor Details
#initialize(verbose, logger, rbs_dir: nil) ⇒ RbsTypeAliasLoader
Returns a new instance of RbsTypeAliasLoader.
23 24 25 26 27 |
# File 'lib/chiridion/engine/rbs_type_alias_loader.rb', line 23 def initialize(verbose, logger, rbs_dir: nil) @verbose = verbose @logger = logger @rbs_dir = rbs_dir end |
Instance Method Details
#load ⇒ Hash{String => Array<Hash>}
Extract type aliases from generated RBS files.
32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/chiridion/engine/rbs_type_alias_loader.rb', line 32 def load type_aliases = {} return type_aliases unless @rbs_dir && Dir.exist?(@rbs_dir) rbs_files = Dir.glob(File.join(@rbs_dir, "**/*.rbs")) rbs_files.each do |file| parse_rbs_file(file, type_aliases) end count = type_aliases.values.flatten.size @logger.info "Extracted #{count} type aliases from #{rbs_files.size} RBS files" if @verbose && count.positive? type_aliases end |