Skip to content

Commit 485468f

Browse files
committed
Respect modeline to detect parser
1 parent 281e70b commit 485468f

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

lib/rdoc/parser.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,11 @@ def self.can_parse_by_name file_name
125125
return parser if ext_name.empty?
126126

127127
if parser == RDoc::Parser::Simple and ext_name !~ /txt|rdoc/ then
128-
case check_modeline file_name
128+
case mode = check_modeline(file_name)
129129
when nil, 'rdoc' then # continue
130-
else return nil
130+
else
131+
RDoc::Parser.parsers.find { |_, p| return p if mode.casecmp?(p.name[/\w+\z/]) }
132+
return nil
131133
end
132134
end
133135

test/rdoc/test_rdoc_parser.rb

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,23 @@ def test_can_parse_modeline
147147
end
148148

149149
assert_equal RDoc::Parser::Simple, @RP.can_parse(readme_ext)
150+
end
151+
152+
def test_can_parse_modeline_c
153+
readme_inc = File.join Dir.tmpdir, "README.inc.#{$$}"
154+
155+
File.open readme_inc, 'w' do |io|
156+
io.puts "/* README.inc - -*- c -*- created at: Mon Aug 7 16:45:54 JST 1995 */"
157+
io.puts
158+
io.puts "/* This document explains how to make extension libraries for Ruby. */"
159+
end
160+
161+
assert_equal RDoc::Parser::C, @RP.can_parse(readme_inc)
150162
ensure
151-
File.unlink readme_ext
163+
File.unlink readme_inc
152164
end
153165

166+
154167
##
155168
# Selenium hides a .jar file using a .txt extension.
156169

0 commit comments

Comments
 (0)