[前][次][番号順一覧][スレッド一覧]

ruby-changes:23481

From: nobu <ko1@a...>
Date: Fri, 4 May 2012 01:33:32 +0900 (JST)
Subject: [ruby-changes:23481] nobu:r35532 (trunk): rdoc: --extension option fix

nobu	2012-05-04 01:33:22 +0900 (Fri, 04 May 2012)

  New Revision: 35532

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=35532

  Log:
    rdoc: --extension option fix
    
    * lib/rdoc/parser.rb (RDoc.alias_extension): a real file is irrelevant
      to aliasing.  [ruby-core:44796][Bug #6392]
    * lib/rdoc/parser.rb (RDoc.zip?): non-existent file will not be a zip
      file.
    * lib/rdoc/parser.rb (RDoc.can_parse_by_name): accept aliased
      extension file names.

  Modified files:
    trunk/ChangeLog
    trunk/lib/rdoc/parser.rb
    trunk/test/rdoc/test_rdoc_options.rb
    trunk/test/rdoc/test_rdoc_parser.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 35531)
+++ ChangeLog	(revision 35532)
@@ -1,5 +1,14 @@
-Fri May  4 01:31:19 2012  Nobuyoshi Nakada  <nobu@r...>
+Fri May  4 01:33:20 2012  Nobuyoshi Nakada  <nobu@r...>
 
+	* lib/rdoc/parser.rb (RDoc.alias_extension): a real file is irrelevant
+	  to aliasing.  [ruby-core:44796][Bug #6392]
+
+	* lib/rdoc/parser.rb (RDoc.zip?): non-existent file will not be a zip
+	  file.
+
+	* lib/rdoc/parser.rb (RDoc.can_parse_by_name): accept aliased
+	  extension file names.
+
 	* lib/rdoc/parser.rb (RDoc.binary?): binary read data may have
 	  incomplete multibyte sequence.  [ruby-core:44798][Bug #6393]
 
Index: lib/rdoc/parser.rb
===================================================================
--- lib/rdoc/parser.rb	(revision 35531)
+++ lib/rdoc/parser.rb	(revision 35532)
@@ -61,7 +61,7 @@
     old_ext = old_ext.sub(/^\.(.*)/, '\1')
     new_ext = new_ext.sub(/^\.(.*)/, '\1')
 
-    parser = can_parse "xxx.#{old_ext}"
+    parser = can_parse_by_name "xxx.#{old_ext}"
     return false unless parser
 
     RDoc::Parser.parsers.unshift [/\.#{new_ext}$/, parser]
@@ -134,21 +134,29 @@
     zip_signature == "PK\x03\x04" or
       zip_signature == "PK\x05\x06" or
       zip_signature == "PK\x07\x08"
+  rescue
+    false
   end
 
   ##
   # Return a parser that can handle a particular extension
 
   def self.can_parse(file_name)
-    parser = RDoc::Parser.parsers.find { |regexp,| regexp =~ file_name }.last
+    parser = can_parse_by_name(file_name)
 
     # HACK Selenium hides a jar file using a .txt extension
     return if parser == RDoc::Parser::Simple and zip? file_name
 
+    parser
+  end
+
+  def self.can_parse_by_name(file_name)
+    pattern, parser = RDoc::Parser.parsers.find { |regexp,| regexp =~ file_name }
+
     # 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/
+    return if parser == RDoc::Parser::Simple and ext_name !~ /txt|rdoc/ and file_name[pattern].empty?
 
     parser
   end
Index: test/rdoc/test_rdoc_parser.rb
===================================================================
--- test/rdoc/test_rdoc_parser.rb	(revision 35531)
+++ test/rdoc/test_rdoc_parser.rb	(revision 35532)
@@ -57,6 +57,13 @@
 
     readme_file_name = File.expand_path '../README', __FILE__
     assert_equal @RP::Simple, @RP.can_parse(readme_file_name)
+
+    jtest_largerdoc_file_name = File.expand_path '../test.ja.largedoc', __FILE__
+    assert_nil @RP.can_parse(jtest_largerdoc_file_name)
+
+    @RP.alias_extension("rdoc", "largedoc")
+    assert_equal @RP::Simple, @RP.can_parse(jtest_largerdoc_file_name)
+
   end
 
   ##
Index: test/rdoc/test_rdoc_options.rb
===================================================================
--- test/rdoc/test_rdoc_options.rb	(revision 35531)
+++ test/rdoc/test_rdoc_options.rb	(revision 35532)
@@ -337,6 +337,15 @@
     $LOAD_PATH.replace orig_LOAD_PATH
   end
 
+  def test_parse_extension_alias
+    out, err = capture_io do
+      @options.parse %w[--extension foobar=rdoc]
+    end
+
+    assert_empty out
+    assert_empty err
+  end
+
   def test_setup_generator
     test_generator = Class.new do
       def self.setup_options op

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]