summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/rdoc/encoding.rb4
-rw-r--r--lib/rdoc/parser.rb11
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