class Time
Public Class Methods
yaml_new( klass, tag, val )
click to toggle source
# File lib/syck/rubytypes.rb, line 314 def Time.yaml_new( klass, tag, val ) if Hash === val t = val.delete( 'at' ) val.each { |k,v| t.instance_variable_set( k, v ) } t else raise Syck::TypeError, "Invalid Time: " + val.inspect end end
Public Instance Methods
to_yaml( opts = {} )
click to toggle source
Calls superclass method
Object#to_yaml
# File lib/syck/rubytypes.rb, line 323 def to_yaml( opts = {} ) return super unless YAML == Syck Syck::quick_emit( self, opts ) do |out| tz = "Z" # from the tidy Tobias Peters <t-peters@gmx.de> Thanks! unless self.utc? utc_same_instant = self.dup.utc utc_same_writing = Time.utc(year,month,day,hour,min,sec,usec) difference_to_utc = utc_same_writing - utc_same_instant if (difference_to_utc < 0) difference_sign = '-' absolute_difference = -difference_to_utc else difference_sign = '+' absolute_difference = difference_to_utc end difference_minutes = (absolute_difference/60).round tz = "%s%02d:%02d" % [ difference_sign, difference_minutes / 60, difference_minutes % 60] end standard = self.strftime( "%Y-%m-%d %H:%M:%S" ) standard += ".%06d" % [usec] if usec.nonzero? standard += " %s" % [tz] if to_yaml_properties.empty? out.scalar( taguri, standard, :plain ) else out.map( taguri, to_yaml_style ) do |map| map.add( 'at', standard ) to_yaml_properties.each do |m| map.add( m, instance_variable_get( m ) ) end end end end end