summaryrefslogtreecommitdiff
path: root/ext/psych/lib/psych/visitors/yaml_tree.rb
diff options
context:
space:
mode:
authortenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-07-05 03:33:56 +0000
committertenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-07-05 03:33:56 +0000
commitce2e7368d73b762a86690fe3531e0754301299be (patch)
treee3344d62b873a83a84bf91f24b353c6a0f2ca191 /ext/psych/lib/psych/visitors/yaml_tree.rb
parent9f56a870af1c88430a053b4e50ba39c244a4bd57 (diff)
* 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
Diffstat (limited to 'ext/psych/lib/psych/visitors/yaml_tree.rb')
-rw-r--r--ext/psych/lib/psych/visitors/yaml_tree.rb28
1 files changed, 13 insertions, 15 deletions
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