module RDoc::RbsSupport
Public Class Methods
Source
# File lib/rdoc/rbs_support.rb, line 42 def load_signatures(*dirs) loader = RBS::EnvironmentLoader.new dirs.each { |dir| loader.add(path: Pathname(dir)) } env = RBS::Environment.new loader.load(env: env) signatures = {} env.class_decls.each do |type_name, entry| class_name = type_name.to_s.delete_prefix('::') entry.each_decl do |decl| decl.members.each do |member| case member when RBS::AST::Members::MethodDefinition key = member.singleton? ? "#{class_name}::#{member.name}" : "#{class_name}##{member.name}" sigs = member.overloads.map { |o| o.method_type.to_s } signatures[key] = sigs.join("\n") when RBS::AST::Members::AttrReader, RBS::AST::Members::AttrWriter, RBS::AST::Members::AttrAccessor key = "#{class_name}.#{member.name}" signatures[key] = member.type.to_s end end end end signatures end
Loads RBS signatures from the given directories. Returns a Hash mapping “ClassName#method_name” => “type sig string”.
Source
# File lib/rdoc/rbs_support.rb, line 83 def signature_to_html(lines, lookup:, from_path:) lines.map { |line| link_type_names_in_line(line, lookup, from_path).gsub('->', '→') }.join("\n") end
Converts type signature lines to HTML with type names linked to their documentation pages. Uses the RBS parser to extract type name locations precisely.
lines is an Array of signature line strings. lookup is a Hash mapping type names to their doc paths. from_path is the current page path for generating relative URLs.
Returns escaped HTML with -> replaced by +→+.
Source
# File lib/rdoc/rbs_support.rb, line 20 def validate_method_type(sig) RBS::Parser.parse_method_type(sig, require_eof: true) nil rescue RBS::ParsingError => e e.message end
Validates an RBS method type signature string. Returns nil if valid, or an error message string if invalid.
Source
# File lib/rdoc/rbs_support.rb, line 31 def validate_type(sig) RBS::Parser.parse_type(sig, require_eof: true) nil rescue RBS::ParsingError => e e.message end
Validates an RBS type signature string. Returns nil if valid, or an error message string if invalid.