summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2024-01-11 14:54:03 +0900
committergit <svn-admin@ruby-lang.org>2024-01-11 06:55:39 +0000
commit7558625be1d1f8160e7e138a773925b75a87f283 (patch)
treedc8d5a1d0bab01b1b317639d4d5d0300d349b495
parentc26fdce9eca9659800fb3a77dc53f9ade444f639 (diff)
[ruby/rdoc] Respect modeline to detect parser
https://github.com/ruby/rdoc/commit/485468f06f
-rw-r--r--lib/rdoc/parser.rb6
-rw-r--r--test/rdoc/test_rdoc_parser.rb15
2 files changed, 18 insertions, 3 deletions
diff --git a/lib/rdoc/parser.rb b/lib/rdoc/parser.rb
index 3bb6f5d1f2..425105effa 100644
--- a/lib/rdoc/parser.rb
+++ b/lib/rdoc/parser.rb
@@ -125,9 +125,11 @@ class RDoc::Parser
return parser if ext_name.empty?
if parser == RDoc::Parser::Simple and ext_name !~ /txt|rdoc/ then
- case check_modeline file_name
+ case mode = check_modeline(file_name)
when nil, 'rdoc' then # continue
- else return nil
+ else
+ RDoc::Parser.parsers.find { |_, p| return p if mode.casecmp?(p.name[/\w+\z/]) }
+ return nil
end
end
diff --git a/test/rdoc/test_rdoc_parser.rb b/test/rdoc/test_rdoc_parser.rb
index 7cc3c2d926..a19986bd26 100644
--- a/test/rdoc/test_rdoc_parser.rb
+++ b/test/rdoc/test_rdoc_parser.rb
@@ -147,10 +147,23 @@ class TestRDocParser < RDoc::TestCase
end
assert_equal RDoc::Parser::Simple, @RP.can_parse(readme_ext)
+ end
+
+ def test_can_parse_modeline_c
+ readme_inc = File.join Dir.tmpdir, "README.inc.#{$$}"
+
+ File.open readme_inc, 'w' do |io|
+ io.puts "/* README.inc - -*- c -*- created at: Mon Aug 7 16:45:54 JST 1995 */"
+ io.puts
+ io.puts "/* This document explains how to make extension libraries for Ruby. */"
+ end
+
+ assert_equal RDoc::Parser::C, @RP.can_parse(readme_inc)
ensure
- File.unlink readme_ext
+ File.unlink readme_inc
end
+
##
# Selenium hides a .jar file using a .txt extension.