class RSpecJumpstart::RDocFactory

Public Class Methods

extract_target_class_or_module(top_level) click to toggle source

Extracts RDoc::NormalClass/RDoc::NormalModule from RDoc::TopLevel.

# File lib/rspec_jumpstart/rdoc_factory.rb, line 47
def self.extract_target_class_or_module(top_level)
  c = top_level.classes.first
  return c if c

  m = top_level.modules.first
  if m.nil?
    top_level.is_a?(RDoc::NormalModule) ? top_level : nil
  else
    extract_target_class_or_module(m)
  end
end
get_rdoc_class_or_module(file_path) click to toggle source

Returns RDoc::NormalClass/RDoc::NormalModule instance.

# File lib/rspec_jumpstart/rdoc_factory.rb, line 19
def self.get_rdoc_class_or_module(file_path)
  top_level = get_ruby_parser(file_path).scan
  extract_target_class_or_module(top_level)
end
get_ruby_parser(file_path) click to toggle source

Creates new RDoc::Parser::Ruby instance.

# File lib/rspec_jumpstart/rdoc_factory.rb, line 27
def self.get_ruby_parser(file_path)
  top_level = RDoc::TopLevel.new(file_path)

  # RDoc 4.0.0 requires RDoc::Store internally.
  store           = RDoc::Store.new
  top_level.store = store
  stats           = RDoc::Stats.new(store, 1)

  RDoc::Parser::Ruby.new(
    top_level,
    file_path,
    File.read(file_path),
    RDoc::Options.new,
    stats
  )
end