diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-12-18 08:24:57 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-12-18 08:24:57 +0000 |
commit | dff59f6c5df7d995d02e8173a8ce42ff9c552e88 (patch) | |
tree | 9f5e5cec85b40b986b3405b913a5c59cb82e53e9 /lib/rdoc | |
parent | aa233d3f3331c266baabfefc68d9bc2cc2f4fd0b (diff) |
* lib/rdoc/encoding.rb: Do not remove #! line from document when
setting encoding. This allows ruby executables to be parsed as ruby
files.
* test/rdoc/test_rdoc_encoding.rb: Test for above.
* lib/rdoc/parser.rb: Set the parser file name of ruby executables
correctly.
* test/rdoc/test_rdoc_parser.rb: Test for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rdoc')
-rw-r--r-- | lib/rdoc/encoding.rb | 4 | ||||
-rw-r--r-- | lib/rdoc/parser.rb | 11 |
2 files changed, 12 insertions, 3 deletions
diff --git a/lib/rdoc/encoding.rb b/lib/rdoc/encoding.rb index 0b1ec6728e..9fe3539412 100644 --- a/lib/rdoc/encoding.rb +++ b/lib/rdoc/encoding.rb @@ -75,7 +75,9 @@ module RDoc::Encoding # Sets the encoding of +string+ based on the magic comment def self.set_encoding string - first_line = string[/\A(?:#!.*\n)?.*\n/] + string =~ /\A(?:#!.*\n)?(.*\n)/ + + first_line = $1 name = case first_line when /^<\?xml[^?]*encoding=(["'])(.*?)\1/ then $2 diff --git a/lib/rdoc/parser.rb b/lib/rdoc/parser.rb index 685736fd28..506b5e7d1b 100644 --- a/lib/rdoc/parser.rb +++ b/lib/rdoc/parser.rb @@ -46,6 +46,11 @@ class RDoc::Parser end ## + # The name of the file being parsed + + attr_reader :file_name + + ## # Alias an extension to another extension. After this call, files ending # "new_ext" will be parsed using the same parser as "old_ext" @@ -182,16 +187,18 @@ class RDoc::Parser parser = use_markup content unless parser then + parse_name = file_name + # If no extension, look for shebang if file_name !~ /\.\w+$/ && content =~ %r{\A#!(.+)} then shebang = $1 case shebang when %r{env\s+ruby}, %r{/ruby} - file_name = "dummy.rb" + parse_name = 'dummy.rb' end end - parser = can_parse file_name + parser = can_parse parse_name end return unless parser |