[前][次][番号順一覧][スレッド一覧]

ruby-changes:5642

From: akr <ko1@a...>
Date: Fri, 13 Jun 2008 18:11:09 +0900 (JST)
Subject: [ruby-changes:5642] Ruby:r17149 (trunk): * lib/time.rb (Time.xmlschema): don't accept decimal dot without

akr	2008-06-13 18:10:44 +0900 (Fri, 13 Jun 2008)

  New Revision: 17149

  Modified files:
    trunk/ChangeLog
    trunk/lib/time.rb

  Log:
    * lib/time.rb (Time.xmlschema): don't accept decimal dot without
      fractional digits.  fractional digits handling simplified.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/time.rb?r1=17149&r2=17148&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=17149&r2=17148&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 17148)
+++ ChangeLog	(revision 17149)
@@ -1,3 +1,8 @@
+Fri Jun 13 18:08:10 2008  Tanaka Akira  <akr@f...>
+
+	* lib/time.rb (Time.xmlschema): don't accept decimal dot without
+	  fractional digits.  fractional digits handling simplified.
+
 Fri Jun 13 17:20:40 2008  wanabe  <s.wanabe@g...>
 
 	* complex.c (string_to_c_internal): save and restore backref.
Index: lib/time.rb
===================================================================
--- lib/time.rb	(revision 17148)
+++ lib/time.rb	(revision 17149)
@@ -374,7 +374,7 @@
           (-?\d+)-(\d\d)-(\d\d)
           T
           (\d\d):(\d\d):(\d\d)
-          (\.\d*)?
+          (\.\d+)?
           (Z|[+-]\d\d:\d\d)?
           \s*\z/ix =~ date
         year = $1.to_i
@@ -385,7 +385,7 @@
         sec = $6.to_i
         usec = 0
         if $7
-          usec = Rational(($7[1..-1] + '000000000')[0,9].to_i, 1000)
+          usec = Rational($7) * 1000000
         end
         if $8
           zone = $8
@@ -624,6 +624,7 @@
                    Time.xmlschema("2000-01-12T12:13:14Z"))
       assert_equal(Time.utc(2001, 4, 17, 19, 23, 17, 300000),
                    Time.xmlschema("2001-04-17T19:23:17.3Z"))
+      assert_raise(ArgumentError) { Time.xmlschema("2000-01-01T00:00:00.+00:00") }
     end
 
     def test_encode_xmlschema
@@ -812,6 +813,10 @@
       assert_equal(t, Time.xmlschema("1998-12-31T23:00:00-01:00"))
     end
 
+    def test_xmlschema_fraction
+      assert_equal(500000, Time.xmlschema("2000-01-01T00:00:00.5+00:00").tv_usec)
+    end
+
     def test_ruby_talk_152866
       t = Time::xmlschema('2005-08-30T22:48:00-07:00')
       assert_equal(31, t.day)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]