Class: RDoc::Generator::Markdown::RbsSignatureIndex

Inherits:
Object
  • Object
show all
Defined in:
lib/rdoc/generator/markdown/rbs_signature_index.rb

Overview

Optional lookup of method signatures parsed from RBS files.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(signatures) ⇒ RbsSignatureIndex

Returns a new instance of RbsSignatureIndex.

Parameters:

  • signatures (Hash{Array => Array<String>})

    Signature lookup.



152
153
154
# File 'lib/rdoc/generator/markdown/rbs_signature_index.rb', line 152

def initialize(signatures)
  @signatures = signatures
end

Class Method Details

.build(files, base_dir = nil, store = nil) ⇒ RDoc::Generator::Markdown::RbsSignatureIndex

Builds a signature index from RBS files included in an RDoc run.

Parameters:

  • files (Array<String>)

    Input files passed to RDoc.

  • base_dir (String, Pathname, nil) (defaults to: nil)

    Directory where RDoc started.

  • store (RDoc::Store, nil) (defaults to: nil)

    Store containing Ruby code objects and RDoc 8 sidecar signatures.

Returns:

  • (RDoc::Generator::Markdown::RbsSignatureIndex)

    Signature index.



12
13
14
15
# File 'lib/rdoc/generator/markdown/rbs_signature_index.rb', line 12

def self.build(files, base_dir = nil, store = nil)
  rbs_files = files.select { |file| File.extname(file) == ".rbs" }
  new(signatures_from_store(store).merge(signatures_from(rbs_files, base_dir)))
end

Instance Method Details

#any?Boolean

Checks whether any RBS signatures were parsed.

Returns:

  • (Boolean)

    True when type signatures are available.



168
169
170
# File 'lib/rdoc/generator/markdown/rbs_signature_index.rb', line 168

def any?
  @signatures.any?
end

#signature_lines_for(method) ⇒ Array<String>

Looks up the RBS signature lines for an RDoc method.

Parameters:

  • method (RDoc::AnyMethod)

    Method object to render.

Returns:

  • (Array<String>)

    RBS method type lines when available.



161
162
163
# File 'lib/rdoc/generator/markdown/rbs_signature_index.rb', line 161

def signature_lines_for(method)
  @signatures.fetch([method.parent.full_name, method.singleton, method.name], [])
end