From: nobu@... Date: 2004-09-07T18:40:53+09:00 Subject: [ruby-list:40022] Re: yaml.rbとdate.rbを組み合わせて使った際の問題 なかだです。 At Tue, 7 Sep 2004 18:05:46 +0900, IWATSUKI Hiroyuki wrote in [ruby-list:40020]: > ちょっと時間が無くて細かくは考えてませんが、根本的には、yamlがDateクラス > のサブクラスに対応する、DateTimeをTimeのサブクラスにする、Date#to_yamlの > 定義自体を削除してしまう、などの対処が必要だと思います。雑な意見ですみま > せん。 現実的なのは一つ目の方法でしょう。 二つ目の「DateTimeをTimeのサブクラスにする」は、大がかりすぎる と思います。 三つ目は、YAMLの仕様として受け入れられないでしょう、たぶん。 Index: lib/yaml/rubytypes.rb =================================================================== RCS file: /cvs/ruby/src/ruby/lib/yaml/rubytypes.rb,v retrieving revision 1.27 diff -U2 -p -d -r1.27 rubytypes.rb --- lib/yaml/rubytypes.rb 18 Aug 2004 20:44:54 -0000 1.27 +++ lib/yaml/rubytypes.rb 7 Sep 2004 09:11:31 -0000 @@ -572,4 +572,26 @@ class Date end end + +class DateTime + def is_complex_yaml? + true + end + def to_yaml_type + t = "!ruby/datetime" + unless (k = self.class) == DateTime + t << ":" << k.to_s + end + t + end + def to_yaml( opts = {} ) + YAML.quick_emit(nil, opts) {|out| out << "#{to_yaml_type} #{strftime}"} + end +end + +YAML.add_ruby_type(/^datetime/) {|type, val| + type, obj_class = YAML.read_type_class( type, ::DateTime ) + obj_class.parse(val) +} + # -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦