diff options
Diffstat (limited to 'lib/rdoc/parser.rb')
-rw-r--r-- | lib/rdoc/parser.rb | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/lib/rdoc/parser.rb b/lib/rdoc/parser.rb index 9c207edcff..5abc374bf7 100644 --- a/lib/rdoc/parser.rb +++ b/lib/rdoc/parser.rb @@ -76,25 +76,15 @@ class RDoc::Parser s = File.read(file, 1024) or return false - have_encoding = s.respond_to? :encoding - return true if s[0, 2] == Marshal.dump('')[0, 2] or s.index("\x00") - if have_encoding then - mode = "r" - s.sub!(/\A#!.*\n/, '') # assume shebang line isn't longer than 1024. - encoding = s[/^\s*\#\s*(?:-\*-\s*)?(?:en)?coding:\s*([^\s;]+?)(?:-\*-|[\s;])/, 1] - mode = "rb:#{encoding}" if encoding - s = File.open(file, mode) {|f| f.gets(nil, 1024)} - - not s.valid_encoding? - else - if 0.respond_to? :fdiv then - s.count("\x00-\x7F", "^ -~\t\r\n").fdiv(s.size) > 0.3 - else # HACK 1.8.6 - (s.count("\x00-\x7F", "^ -~\t\r\n").to_f / s.size) > 0.3 - end - end + mode = "r" + s.sub!(/\A#!.*\n/, '') # assume shebang line isn't longer than 1024. + encoding = s[/^\s*\#\s*(?:-\*-\s*)?(?:en)?coding:\s*([^\s;]+?)(?:-\*-|[\s;])/, 1] + mode = "rb:#{encoding}" if encoding + s = File.open(file, mode) {|f| f.gets(nil, 1024)} + + not s.valid_encoding? end ## @@ -308,4 +298,3 @@ require 'rdoc/parser/changelog' require 'rdoc/parser/markdown' require 'rdoc/parser/rd' require 'rdoc/parser/ruby' - |