logo       

[ruby-list:43075] YAMLライブラリのバグ?: msg#00060

lang.ruby.japanese

Subject: [ruby-list:43075] YAMLライブラリのバグ?

ANN以外で初めて投稿します。

Railsでデータベースを切り替える際に、YAMLへ退避する方法を試していて、日
本語のTextがうまくエンコードされないのでYAMLライブラリのソースを見ていま
したが、バイナリとしてエンコードするか否かの判定で、「統計的手法?」を採っ
ていると思われる部分で、おかしな点を発見しました。

浮動小数点を基準値として比較を行っているのですが、比較値の計算を整数のま
ま行っているため、決して真にはならない箇所がありました。

下記のように.to_fをつけるべきだと思いますが、いかがでしょうか?

--- c:\ruby-1.8.5-p2\lib\yaml\rubytypes.rb Tue Jan 10 12:50:27 2006
+++ c:\ruby\lib\ruby\1.8\yaml\rubytypes.rb Fri Dec 22 22:39:22 2006
@@ -143,7 +143,7 @@
to_yaml_style or not to_yaml_properties.empty? or self =~ /\n.+/
end
def is_binary_data?
- ( self.count( "^ -~", "^\r\n" ) / self.size > 0.3 || self.count(
"\x00" ) > 0 ) unless empty?
+ ( self.count( "^ -~", "^\r\n" ).to_f / self.size > 0.3 || self.count(
"\x00" ) > 0 ) unless empty?
end
def String.yaml_new( klass, tag, val )
val = val.unpack("m")[0] if tag == "tag:yaml.org,2002:binary"


-------------
いたさん
http://rails.to/





<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise