parse_file(filename)
public
Show source
def parse_file filename
encoding = @options.encoding
filename = filename.encode encoding
@stats.add_file filename
return if RDoc::Parser.binary? filename
content = RDoc::Encoding.read_file filename, encoding
return unless content
filename_path = Pathname(filename).expand_path
begin
relative_path = filename_path.relative_path_from @options.root
rescue ArgumentError
relative_path = filename_path
end
if @options.page_dir and
relative_path.to_s.start_with? @options.page_dir.to_s then
relative_path =
relative_path.relative_path_from @options.page_dir
end
top_level = @store.add_file filename, relative_path.to_s
parser = RDoc::Parser.for top_level, filename, content, @options, @stats
return unless parser
parser.scan
top_level.classes_or_modules.each do |cm|
cm.done_documenting = false
end
top_level
rescue Errno::EACCES => e
$stderr.puts Unable to read
rescue => e
$stderr.puts Before reporting this, could you check that the file you're documentinghas proper syntax: #{Gem.ruby} -c #{filename}RDoc is not a full Ruby parser and will fail when fed invalid ruby programs.The internal error was:\t(#{e.class}) #{e.message}
$stderr.puts e.backtrace.join("\n\t") if $DEBUG_RDOC
raise e
nil
end