Skip to content

Commit

Permalink
* lib/rdoc/rdoc.rb (RDoc#read_file_contents): take care of BOM.
Browse files Browse the repository at this point in the history
  [ruby-dev:41452]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28062 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nobu committed May 29, 2010
1 parent 790abc5 commit 8e9f308
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 3 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
@@ -1,3 +1,8 @@
Sat May 29 12:05:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>

* lib/rdoc/rdoc.rb (RDoc#read_file_contents): take care of BOM.
[ruby-dev:41452]

Sat May 29 10:12:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>

* gc.c (GC_PROF_TIMER_STOP): regularize `marked' to suppress
Expand Down
8 changes: 5 additions & 3 deletions lib/rdoc/rdoc.rb
Expand Up @@ -406,11 +406,13 @@ def document(argv)
def read_file_contents(filename)
content = open filename, "rb" do |f| f.read end

utf8 = content.sub!(/\A\xef\xbb\xbf/, '')
if defined? Encoding then
if /coding[=:]\s*([^\s;]+)/i =~ content[%r"\A(?:#!.*\n)?.*\n"]
if enc = ::Encoding.find($1)
content.force_encoding(enc)
end
enc = ::Encoding.find($1)
end
if enc ||= (Encoding::UTF_8 if utf8)
content.force_encoding(enc)
end
end

Expand Down
12 changes: 12 additions & 0 deletions test/rdoc/test_rdoc_rdoc.rb
Expand Up @@ -68,6 +68,18 @@ def test_read_file_contents_encoding_fancy
assert_equal Encoding::UTF_8, contents.encoding
end

def test_read_file_contents_encoding_with_signature
skip "Encoding not implemented" unless defined? ::Encoding

@tempfile.write "\xEF\xBB\xBF""hi everybody"
@tempfile.flush

bug3360 = '[ruby-dev:41452]'
contents = @rdoc.read_file_contents @tempfile.path
assert_equal "hi everybody", contents, bug3360
assert_equal Encoding::UTF_8, contents.encoding, bug3360
end

def test_remove_unparsable
file_list = %w[
blah.class
Expand Down

0 comments on commit 8e9f308

Please sign in to comment.