in lib/rdoc/rdoc.rb [345:413]
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_name: 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 <<-EOF
Unable to read
Please check the permissions for this file. Perhaps you do not have access to
it or perhaps the original author's permissions are to restrictive. If the
this is not your library please report a bug to the author.
EOF
rescue => e
$stderr.puts <<-EOF
Before reporting this, could you check that the file you're documenting
has proper syntax:
RDoc is not a full Ruby parser and will fail when fed invalid ruby programs.
The internal error was:
\t(
EOF
$stderr.puts e.backtrace.join("\n\t") if $DEBUG_RDOC
raise e
nil
end