Bug #3360: rdoc fails when including BOM
http://redmine.ruby-lang.org/issues/show/3360
e$B5/I<<Te(B: white leaf
e$B%9%F!<%?%9e(B: Open, e$BM%@hEYe(B: Normal
ruby -v: ruby 1.9.3dev (2010-05-28 trunk 28052) [i386-cygwin]
whiteleaf e$B$H?=$7$^$9!#e(B
BOM e$B$r4^$`%U%!%$%k$re(B rdoc e$B$K$+$1$k$H=hM}$,8G$^$j$^$9!#e(B
rdoc e$B$,e(B BOM
e$B$r8+$F$J$$$;$$$J$N$G!"0J2<$N%Q%C%A$G$J$*$j$^$7$?!#e(B
e$B!&e(B":bom|utf-8" e$B%*%W%7%g%s$r;H$C$F$$$J$$$N$Oe(B 1.8
e$B$N$?$a$He(B
e$B!!7k6Ie(B ASCII-8BIT e$B$Ke(B force_encoding
e$B$7$J$$$H$$$1$J$$$?$a0UL#$,$J$$$+$i$G$9!#e(B
e$B!!e(B(rdoc e$B$N%(%s%3!<%G%#%s%0$re(B UTF-8 e$B$K$9$k$J$iJL$G$9$,e(B)
e$B!&e(BUTF-8 e$B$Ne(B BOM e$B$7$+8+$F$$$J$$$N$Oe(B ruby
e$B%9%/%j%W%H$K;H$o$J$$e(B(e$B;H$($J$$e(B)
e$B!!$N$G0UL#$,$J$$$+$i$G$9!#e(B
e$B!&e(Bencode
e$B$7$F$k$N$OJ#?t$N%U%!%$%k$,0[$J$k%(%s%3!<%G%#%s%0$r;H$C$F$$$k>l9g$Ke(B
e$B!!e(Bcharset e$B$H%(%s%3!<%G%#%s%0$,0[$J$k2DG=@-$,$"$k$?$a$G$9!#e(B
e$BM>CL$G$9$,!"e(Bbom|utf-*
e$B%*%W%7%g%s$O%(%s%3!<%G%#%s%0$,L$CN$N>l9g$K$Oe(B
e$B$[$H$s$I0UL#$,L5$$$J$"$H;W$$$^$7$?!#e(B
Index: generator/template/darkfish/classpage.rhtml
— generator/template/darkfish/classpage.rhtml (e$B%j%S%8%g%se(B
28052)
+++ generator/template/darkfish/classpage.rhtml (e$B:n6H%3%T!<e(B)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="<%= @options.charset %>"?>
Index: rdoc.rb
===================================================================
--- rdoc.rb (e$B%j%S%8%g%se(B 28052)
+++ rdoc.rb (e$B:n6H%3%T!<e(B)
@@ -404,12 +404,17 @@
end
def read_file_contents(filename)
-
utf8_bom = [0xEF, 0xBB, 0xBF].pack(“C*”)
content = open filename, “rb” do |f| f.read end
-
if content[0…2] == utf8_bom then
-
content = content[3..-1]
-
end
if defined? Encoding then
if /coding[=:]\s*([^\s;]+)/i =~ content[%r"\A(?:#!.\n)?.\n"]
if enc = ::Encoding.find($1)
content.force_encoding(enc)
-
content.encode!(@options.charset)
end
end
end
e$B%A%1%C%He(B #3360 e$B$,99?7$5$l$^$7$?!#e(B (by Nobuyoshi N.)
e$B%9%F!<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B
This issue was solved with changeset r28062.
white, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
http://redmine.ruby-lang.org/issues/show/3360
e$B1sF#$G$9!#e(B
2010e$BG/e(B5e$B7ne(B29e$BF|e(B12:07 Nobuyoshi N.
[email protected]:
This issue was solved with changeset r28062.
Eric e$B$rDL$5$:$KD>$7$F$$$?$@$$$F$7$^$C$?$h$&$G$9$,!"!Ve(Bhtml
e$B=PNO$Ne(B
charset e$B;XDj$,L5;k$5$l$F$$$k!W$NJ}$bD>$7$F$$$?$@$1$^$9$G$7$g$&$+!#e(B
diff --git a/lib/rdoc/generator/template/darkfish/index.rhtml
b/lib/rdoc/generator/template/darkfish/index.rhtml
index e853235…8dad4f4 100644
— a/lib/rdoc/generator/template/darkfish/index.rhtml
+++ b/lib/rdoc/generator/template/darkfish/index.rhtml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="<%= @options.charset %>"?>
diff --git a/lib/rdoc/rdoc.rb b/lib/rdoc/rdoc.rb
index 3c08b5e…7f41163 100644
— a/lib/rdoc/rdoc.rb
+++ b/lib/rdoc/rdoc.rb
@@ -414,6 +414,7 @@ The internal error was:
if enc ||= (Encoding::UTF_8 if utf8)
content.force_encoding(enc)
end
whiteleaf e$B$G$9!#e(B
–charset e$B%*%W%7%g%s$O!Ve(Bhtml e$B$Ne(B charset
e$B$r;XDj$9$k!W$H$$$&2r<a$G$9$H!“e(B
encode e$B$7$J$$$[$&$,@5$7$$5sF0$H$$$($J$/$b$J$$$G$9$,!”$d$C$Q$je(B
2e$B$D0J>e$N0[$J$k%(%s%3!<%G%#%s%0$N%U%!%$%k$rBP>]$K$9$k>l9g$Oe(B
charset e$B$HCf?H$N%(%s%3!<%G%#%s%0$OB7$($F$[$7$$$H$3$m$G$9!#e(B
e$B$=$l$H1sF#$5$s$N%Q%C%A$G$9$H!“e(B
ASCII-8BIT e$B$N%G!<%?$re(B encode
e$B$7$F$7$^$&2DG=@-$,$”$ke(B(Encoding::UndefinedConversionError)
e$B$N$G!"e(Bforce_encoding e$B$r$7$?>l9g$N$_e(B encode
e$B$9$k$Y$-$G$9!#e(B
e$B!J;d$N%Q%C%A$G$O$=$&=hM}$7$F$$$?$O$:$G$9!Ke(B
e$B$J$+$@$G$9!#e(B
At Sun, 30 May 2010 00:36:49 +0900,
whiteleaf wrote in [ruby-dev:41460]:
–charset e$B%*%W%7%g%s$O!Ve(Bhtml e$B$Ne(B charset e$B$r;XDj$9$k!W$H$$$&2r<a$G$9$H!“e(B
encode e$B$7$J$$$[$&$,@5$7$$5sF0$H$$$($J$/$b$J$$$G$9$,!”$d$C$Q$je(B
2e$B$D0J>e$N0[$J$k%(%s%3!<%G%#%s%0$N%U%!%$%k$rBP>]$K$9$k>l9g$Oe(B
charset e$B$HCf?H$N%(%s%3!<%G%#%s%0$OB7$($F$[$7$$$H$3$m$G$9!#e(B
e$B$=$N$X$s$,3N?.$,$J$+$C$?$3$H$b$"$j!"JL$Ne(Bissuee$B$H9M$($F$=$N$^$^$Ke(B
e$B$7$^$7$?!#e(B
e$B$=$l$H1sF#$5$s$N%Q%C%A$G$9$H!“e(B
ASCII-8BIT e$B$N%G!<%?$re(B encode e$B$7$F$7$^$&2DG=@-$,$”$ke(B(Encoding::UndefinedConversionError)
e$B$N$G!"e(Bforce_encoding e$B$r$7$?>l9g$N$_e(B encode e$B$9$k$Y$-$G$9!#e(B
e$B!J;d$N%Q%C%A$G$O$=$&=hM}$7$F$$$?$O$:$G$9!Ke(B
BOMe$B$be(Bmagic
commente$B$b$J$$>l9g$O!"e(BUS-ASCIIe$B$H$7$F=hM}$9$Y$-$G$7$g$&!#e(B
diff --git a/lib/rdoc/rdoc.rb b/lib/rdoc/rdoc.rb
index 3c08b5e…d605a26 100644
— a/lib/rdoc/rdoc.rb
+++ b/lib/rdoc/rdoc.rb
@@ -411,9 +411,8 @@ The internal error was:
if /coding[=:]\s*([^\s;]+)/i =~ content[%r"\A(?:#!.\n)?.\n"]
enc = ::Encoding.find($1)
end
e$B1sF#$G$9!#e(B
2010e$BG/e(B5e$B7ne(B29e$BF|e(B2:17 white leaf [email protected]:
BOM e$B$r4^$`%U%!%$%k$re(B rdoc e$B$K$+$1$k$H=hM}$,8G$^$j$^$9!#e(B
rdoc e$B$,e(B BOM e$B$r8+$F$J$$$;$$$J$N$G!"0J2<$N%Q%C%A$G$J$*$j$^$7$?!#e(B
e$B$"$j$,$H$&$4$6$$$^$9!#e(B
e$B:F8=$7$^$7$?!#$^$?!"D:$$$?%Q%C%A$GD>$k$3$H$r3NG’$7$^$7$?!#e(B
e$B!&e(B":bom|utf-8" e$B%*%W%7%g%s$r;H$C$F$$$J$$$N$Oe(B 1.8 e$B$N$?$a$He(B
e$B7k6Ie(B ASCII-8BIT e$B$Ke(B force_encoding e$B$7$J$$$H$$$1$J$$$?$a0UL#$,$J$$$+$i$G$9!#e(B
(rdoc e$B$N%(%s%3!<%G%#%s%0$re(B UTF-8 e$B$K$9$k$J$iJL$G$9$,e(B)
e$B!&e(BUTF-8 e$B$Ne(B BOM e$B$7$+8+$F$$$J$$$N$Oe(B ruby e$B%9%/%j%W%H$K;H$o$J$$e(B(e$B;H$($J$$e(B)
e$B$N$G0UL#$,$J$$$+$i$G$9!#e(B
e$B!&e(Bencode e$B$7$F$k$N$OJ#?t$N%U%!%$%k$,0[$J$k%(%s%3!<%G%#%s%0$r;H$C$F$$$k>l9g$Ke(B
charset e$B$H%(%s%3!<%G%#%s%0$,0[$J$k2DG=@-$,$"$k$?$a$G$9!#e(B
e$BMW$9$k$K!"$3$N%Q%C%A$Oe(B 2 e$B$D$NLdBj$r=$@5$7$F$$$^$9$h$M!#e(B
- BOM e$B$,$"$k$H%Q!<%9$,8G$^$ke(B
- html e$B=PNO$Ne(B charset e$B;XDj$,L5;k$5$l$F$$$ke(B
e$B@.@%$5$s!"e(BM17N
e$B4X78$J$N$G%Q%C%A$,@5$7$$$+8+$F$$$?$@$1$^$9$+!#e(B
e$B@5$7$$$h$&$J$ie(B Eric e$B$KE>Aw$7$^$9!#e(B
e$B%A%1%C%H$rK]Lu$7$F$/$l$k?M$O$$$J$$$+$J$"!D!D!#e(B
e$B@.@%$G$9!#e(B
(2010/05/30 1:11), Nobuyoshi N. wrote:
At Sun, 30 May 2010 00:36:49 +0900,
whiteleaf wrote in [ruby-dev:41460]:
–charset e$B%*%W%7%g%s$O!Ve(Bhtml e$B$Ne(B charset e$B$r;XDj$9$k!W$H$$$&2r<a$G$9$H!“e(B
encode e$B$7$J$$$[$&$,@5$7$$5sF0$H$$$($J$/$b$J$$$G$9$,!”$d$C$Q$je(B
2e$B$D0J>e$N0[$J$k%(%s%3!<%G%#%s%0$N%U%!%$%k$rBP>]$K$9$k>l9g$Oe(B
charset e$B$HCf?H$N%(%s%3!<%G%#%s%0$OB7$($F$[$7$$$H$3$m$G$9!#e(B
e$B$=$N$X$s$,3N?.$,$J$+$C$?$3$H$b$"$j!"JL$Ne(Bissuee$B$H9M$($F$=$N$^$^$Ke(B
e$B$7$^$7$?!#e(B
e$B$=$m$($FM_$7$$$H$$$&F05!$OM}2r$G$-$^$9!#e(B
HTML e$B$Ne(B charset e$B$H!"e(BRuby e$B$G$Ne(B encoding
e$B$,0lCW$9$k$H$O8B$i$J$$$s$G$9$h$M!#e(B
cf. Windows-31J, CP51932, Windows-1252
e$B$=$l$H1sF#$5$s$N%Q%C%A$G$9$H!“e(B
ASCII-8BIT e$B$N%G!<%?$re(B encode e$B$7$F$7$^$&2DG=@-$,$”$ke(B(Encoding::UndefinedConversionError)
e$B$N$G!"e(Bforce_encoding e$B$r$7$?>l9g$N$_e(B encode e$B$9$k$Y$-$G$9!#e(B
e$B!J;d$N%Q%C%A$G$O$=$&=hM}$7$F$$$?$O$:$G$9!Ke(B
BOMe$B$be(Bmagic commente$B$b$J$$>l9g$O!"e(BUS-ASCIIe$B$H$7$F=hM}$9$Y$-$G$7$g$&!#e(B
rdoc e$B$,=q$+$l$F$$$k$N$,e(B ruby e$B%9%/%j%W%H$J$i$P$=$l$Oe(B US-ASCII
e$B$N$O$:$G$9!#e(B
e$B$,!"$=$l$re(B UTF-8 e$B$H$7$F07$C$F$bJL$K;Y>c$O$"$j$^$;$s!#e(B
rdoc e$B$,=q$+$l$F$$$k$N$,e(B rdoc
e$B@lMQ%U%!%$%k$@$C$?$j!“JL$N2?$+$X$NKd$a9~$_%G!<%?$N>l9g!“e(B
e$B$=$l$Oe(B rdoc e$B$d$=$N%U%)!<%^%C%H$N;v>p$K0MB8$7$^$9!#$=$l$Oe(B
Ruby M17N e$B$NH=CG$9$k;vJA$G$Oe(B
e$B$”$j$^$;$s!#$=$l$i$,e(B UTF-8
e$B$G$”$k$Y$-$@$HH=CG$9$k$J$i$P$3$l$bLdBj$"$j$^$;$s!#e(B
e$B@.@%$G$9!#e(B
(2010/05/29 2:17), white leaf wrote:
e$B!&e(BUTF-8 e$B$Ne(B BOM e$B$7$+8+$F$$$J$$$N$Oe(B ruby e$B%9%/%j%W%H$K;H$o$J$$e(B(e$B;H$($J$$e(B)
e$B!!$N$G0UL#$,$J$$$+$i$G$9!#e(B
rdoc e$B$N=q$+$l$F$$$k%U%!%$%k$,e(B ruby
e$B%9%/%j%W%H$@$H$O8B$i$J$+$C$?$h$&$J!#e(B
e$B!&e(Bencode e$B$7$F$k$N$OJ#?t$N%U%!%$%k$,0[$J$k%(%s%3!<%G%#%s%0$r;H$C$F$$$k>l9g$Ke(B
e$B!!e(Bcharset e$B$H%(%s%3!<%G%#%s%0$,0[$J$k2DG=@-$,$"$k$?$a$G$9!#e(B
e$B$3$l$,$G$-$F$J$$$N$O8=>u$N;EMM$@$C$?$H;W$$$^$9!#e(B
e$B$J$N$G!"$3$NItJ,$Oe(B feature e$B$G$9$M!#e(B
e$BM>CL$G$9$,!"e(Bbom|utf-* e$B%*%W%7%g%s$O%(%s%3!<%G%#%s%0$,L$CN$N>l9g$K$Oe(B
e$B$[$H$s$I0UL#$,L5$$$J$"$H;W$$$^$7$?!#e(B
e$B%(%s%3!<%G%#%s%0$,L$CN$J>l9g$N$?$a$NJ*$G$OL5$$$N$GEvA3$G$9!#e(B