[MacRuby] #927: MacRuby throws an exception of "undefined method `subsec'" with Time#iso8601.

MacRuby ruby-noreply at macosforge.org
Sun Oct 3 21:43:15 PDT 2010


#927: MacRuby throws an exception of "undefined method `subsec'" with
Time#iso8601.
----------------------------------+-----------------------------------------
 Reporter:  watson1978@…          |       Owner:  joshua.ballanco@…        
     Type:  defect                |      Status:  new                      
 Priority:  blocker               |   Milestone:                           
Component:  ControlTower          |    Keywords:                           
----------------------------------+-----------------------------------------
 Test Script:
 {{{
 #!ruby
 require 'date'
 require 'time'

 t = Time.mktime(2004, 9, 19, 1, 2, 3, 456789)
 d = t.to_datetime

 p t.iso8601(10)
 p d.iso8601(10)
 }}}

 Result:
 {{{
 $ macruby -v test_time.rb
 MacRuby 0.8 (ruby 1.9.2) [universal-darwin10.0, x86_64]
 undefined local variable or method `subsec' for 2004-09-19 01:02:03
 +0900:Time (NameError)
 }}}

 Patch (merged with Ruby 1.9):
 {{{
 #!diff
 git diff lib/time.rb
 diff --git a/lib/time.rb b/lib/time.rb
 index 1c43371..bd5f750 100644
 --- a/lib/time.rb
 +++ b/lib/time.rb
 @@ -513,12 +513,14 @@ class Time
    #     require 'time'
    #
    def xmlschema(fraction_digits=0)
 -    sprintf('%0*d-%02d-%02dT%02d:%02d:%02d',
 -      year < 0 ? 5 : 4, year, mon, day, hour, min, sec) +
 +    sprintf('%d-%02d-%02dT%02d:%02d:%02d',
 +      year, mon, day, hour, min, sec) +
      if fraction_digits == 0
        ''
 +    elsif fraction_digits <= 9
 +      '.' + sprintf('%09d', nsec)[0, fraction_digits]
      else
 -      '.' + sprintf('%0*d', fraction_digits, (subsec *
 10**fraction_digits).floor)
 +      '.' + sprintf('%09d', nsec) + '0' * (fraction_digits - 9)
      end +
      if utc?
        'Z'
 }}}

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/927>
MacRuby <http://macruby.org/>



More information about the macruby-tickets mailing list