From ce2e7368d73b762a86690fe3531e0754301299be Mon Sep 17 00:00:00 2001 From: tenderlove Date: Mon, 5 Jul 2010 03:33:56 +0000 Subject: * ext/psych/lib/psych/scalar_scanner.rb (parse_string): support timezones that are not one hour off. [ruby-core:31023] * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28541 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/psych/lib/psych/visitors/yaml_tree.rb | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) (limited to 'ext/psych/lib/psych/visitors/yaml_tree.rb') diff --git a/ext/psych/lib/psych/visitors/yaml_tree.rb b/ext/psych/lib/psych/visitors/yaml_tree.rb index 412acdb750..ebafffd7c9 100644 --- a/ext/psych/lib/psych/visitors/yaml_tree.rb +++ b/ext/psych/lib/psych/visitors/yaml_tree.rb @@ -136,26 +136,13 @@ module Psych end def visit_DateTime o - o = o.to_time - formatted = o.strftime("%Y-%m-%d %H:%M:%S") - if o.utc? - formatted += ".%06dZ" % [o.nsec] - else - formatted += ".%06d %+.2d:00" % [o.nsec, o.gmt_offset / 3600] - end - + formatted = format_time o.to_time tag = '!ruby/object:DateTime' @emitter.scalar formatted, nil, tag, false, false, Nodes::Scalar::ANY end def visit_Time o - formatted = o.strftime("%Y-%m-%d %H:%M:%S") - if o.utc? - formatted += ".%06dZ" % [o.nsec] - else - formatted += ".%06d %+.2d:00" % [o.nsec, o.gmt_offset / 3600] - end - + formatted = format_time o @emitter.scalar formatted, nil, nil, true, false, Nodes::Scalar::ANY end @@ -281,6 +268,17 @@ module Psych end private + def format_time time + formatted = time.strftime("%Y-%m-%d %H:%M:%S") + if time.utc? + formatted += ".%06dZ" % [time.nsec] + else + formatted += ".%06d %+.2d:%.2d" % [time.nsec, + time.gmt_offset / 3600, time.gmt_offset % 3600 / 60] + end + formatted + end + # FIXME: remove this method once "to_yaml_properties" is removed def find_ivars target loc = target.method(:to_yaml_properties).source_location.first -- cgit v1.2.3