Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

Changeset 1061

Show
Ignore:
Timestamp:
11/26/03 22:20:29 (5 years ago)
Author:
nahi
Message:

* keep secfrac String part.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/xsd/datatypes.rb

    r1058 r1061  
    163163    super() 
    164164    @type = Type 
    165     @encoding = nil 
    166165    set(value) if value 
    167166  end 
     
    255254 
    256255    @data = _to_s 
     256    @data.freeze 
    257257  end 
    258258 
     
    441441    @sec = $8 ? XSDDecimal.new($8) : 0 
    442442    @data = _to_s 
     443    @data.freeze 
    443444  end 
    444445 
     
    517518 
    518519  def _set(t) 
     520    set_datetime_init 
    519521    if (t.is_a?(Date)) 
    520522      @data = t 
     
    542544    super() 
    543545    @type = Type 
    544     set(value) if value 
    545   end 
    546  
    547 private 
     546    @secfrac = nil 
     547    set(value) if value 
     548  end 
     549 
     550private 
     551 
     552  def set_datetime_init 
     553    @secfrac = nil 
     554  end 
    548555 
    549556  def set_str(t) 
     
    569576 
    570577    @data = DateTime.civil(year, mon, mday, hour, min, sec, tz2of(zonestr)) 
     578    @secfrac = secfrac 
    571579 
    572580    if secfrac 
     
    589597      year, @data.mon, @data.mday, @data.hour, @data.min, @data.sec) 
    590598    if @data.sec_fraction.nonzero? 
    591       fr = @data.sec_fraction * SecInDay 
    592       shiftsize = fr.denominator.to_s.size + 1 
    593       fr_s = (fr * (10 ** shiftsize)).to_i.to_s 
    594       s << '.' << '0' * (shiftsize - fr_s.size) << fr_s.sub(/0+$/, '') 
     599      if @secfrac 
     600        s << ".#{ @secfrac }" 
     601      else 
     602        s << ".#{ (@data.sec_fraction * SecInDay).to_f.to_s }" 
     603      end 
    595604    end 
    596605    add_tz(s) 
     
    605614    super() 
    606615    @type = Type 
    607     set(value) if value 
    608   end 
    609  
    610 private 
     616    @secfrac = nil 
     617    set(value) if value 
     618  end 
     619 
     620private 
     621 
     622  def set_datetime_init 
     623    @secfrac = nil 
     624  end 
    611625 
    612626  def set_str(t) 
     
    623637 
    624638    @data = DateTime.civil(1, 1, 1, hour, min, sec, tz2of(zonestr)) 
     639    @secfrac = secfrac 
    625640 
    626641    if secfrac 
    627       @data += secfrac.to_i.to_r / (10 ** secfrac.size) / SecInDay 
     642      diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / SecInDay 
     643      @data += diffday 
    628644    end 
    629645  end 
     
    632648    s = format('%02d:%02d:%02d', @data.hour, @data.min, @data.sec) 
    633649    if @data.sec_fraction.nonzero? 
    634       fr = @data.sec_fraction * SecInDay 
    635       shiftsize = fr.denominator.to_s.size + 1 
    636       fr_s = (fr * (10 ** shiftsize)).to_i.to_s 
    637       s << '.' << '0' * (shiftsize - fr_s.size) << fr_s.sub(/0+$/, '') 
     650      if @secfrac 
     651        s << ".#{ @secfrac }" 
     652      else 
     653        s << ".#{ (@data.sec_fraction * SecInDay).to_f.to_s }" 
     654      end 
    638655    end 
    639656    add_tz(s) 
     
    652669 
    653670private 
     671 
     672  def set_datetime_init 
     673  end 
    654674 
    655675  def set_str(t) 
     
    689709private 
    690710 
     711  def set_datetime_init 
     712  end 
     713 
    691714  def set_str(t) 
    692715    /^([+\-]?\d{4,})-(\d\d)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip 
     
    724747private 
    725748 
     749  def set_datetime_init 
     750  end 
     751 
    726752  def set_str(t) 
    727753    /^([+\-]?\d{4,})(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip 
     
    758784private 
    759785 
     786  def set_datetime_init 
     787  end 
     788 
    760789  def set_str(t) 
    761790    /^(\d\d)-(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip 
     
    789818private 
    790819 
     820  def set_datetime_init 
     821  end 
     822 
    791823  def set_str(t) 
    792824    /^(\d\d)(Z|(?:[+\-]\d\d:\d\d)?)?$/ =~ t.to_s.strip 
     
    818850 
    819851private 
     852 
     853  def set_datetime_init 
     854  end 
    820855 
    821856  def set_str(t) 
     
    936971    @localpart = $2 
    937972    @data = _to_s 
     973    @data.freeze 
    938974  end 
    939975 
  • trunk/test/soap/test_basetype.rb

    r993 r1061  
    352352      "2002-12-31T23:59:59-23:59", 
    353353      "2002-12-31T23:59:59.00000000000000000001+13:30", 
     354      "2002-12-31T23:59:59.51375Z", 
     355      "2002-12-31T23:59:59.51345+12:34", 
    354356      "-2002-05-18T16:52:20Z", 
    355357      "-4711-12-31T23:59:59Z", 
     
    415417      "23:59:59-23:59", 
    416418      "23:59:59.00000000000000000001+13:30", 
     419      "23:59:59.51375Z", 
     420      "23:59:59.51375+12:34", 
    417421      "23:59:59+00:01", 
    418422    ] 
  • trunk/test/xsd/test_xsd.rb

    r993 r1061  
    385385      "2002-12-31T23:59:59-23:59", 
    386386      "2002-12-31T23:59:59.00000000000000000001+13:30", 
     387      "2002-12-31T23:59:59.5137Z", 
     388      "2002-12-31T23:59:59.51375Z",     # 411/800 
     389      "2002-12-31T23:59:59.51375+12:34", 
    387390      "-2002-05-18T16:52:20Z", 
    388391      "-4713-01-01T12:00:00Z", 
     
    446449      "23:59:59-23:59", 
    447450      "23:59:59.00000000000000000001+13:30", 
     451      "23:59:59.51345Z", 
     452      "23:59:59.51345+12:34", 
    448453      "23:59:59+00:01", 
    449454    ]