From f242cefc68e8755493a50aaf2a30943e85994d6d Mon Sep 17 00:00:00 2001 From: drbrain Date: Sat, 1 Dec 2012 22:24:53 +0000 Subject: * lib/rdoc/parser.rb: Parse files with a -*- rdoc -*- modeline * test/rdoc/test_rdoc_parser.rb: Test for above git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rdoc/parser.rb | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'lib/rdoc') diff --git a/lib/rdoc/parser.rb b/lib/rdoc/parser.rb index b51f7868ea..1d4d0675b8 100644 --- a/lib/rdoc/parser.rb +++ b/lib/rdoc/parser.rb @@ -138,12 +138,33 @@ class RDoc::Parser # The default parser must not parse binary files ext_name = File.extname file_name return parser if ext_name.empty? - return if parser == RDoc::Parser::Simple and ext_name !~ /txt|rdoc/ + if parser == RDoc::Parser::Simple and ext_name !~ /txt|rdoc/ then + case check_modeline file_name + when 'rdoc' then # continue + else return nil + end + end parser rescue Errno::EACCES end + ## + # Returns the file type from the modeline in +file_name+ + + def self.check_modeline file_name + line = open file_name do |io| + io.gets + end + + line =~ /-\*-(.*?)-\*-/ + + return nil unless type = $1 + + type.strip.downcase + rescue ArgumentError # invalid byte sequence, etc. + end + ## # Finds and instantiates the correct parser for the given +file_name+ and # +content+. -- cgit v1.2.3