[#39989] TCPSocket.new でスレッドが止まる。 — take_tk <ggb03124@...>

たけ(tk)です。

15 messages 2004/09/02

[#40018] yaml.rbとdate.rbを組み合わせて使った際の問題 — "Keisuke Minami" <keisuke@...>

こんにちは。三並と申します。

14 messages 2004/09/07
[#40020] Re: yaml.rbとdate.rbを組み合わせて使った際の問題 — IWATSUKI Hiroyuki <don@...> 2004/09/07

岩月と申します。

[ruby-list:40022] Re: yaml.rbとdate.rbを組み合わせて使った際の問題

From: nobu@...
Date: 2004-09-07 09:40:53 UTC
List: ruby-list #40022
なかだです。

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はできる。
    中田 伸悦

In This Thread