diff options
Diffstat (limited to 'ext/psych/lib/psych/visitors/yaml_tree.rb')
-rw-r--r-- | ext/psych/lib/psych/visitors/yaml_tree.rb | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/ext/psych/lib/psych/visitors/yaml_tree.rb b/ext/psych/lib/psych/visitors/yaml_tree.rb index 4282e0bb0a..412acdb750 100644 --- a/ext/psych/lib/psych/visitors/yaml_tree.rb +++ b/ext/psych/lib/psych/visitors/yaml_tree.rb @@ -135,6 +135,19 @@ module Psych @emitter.scalar o.inspect, nil, '!ruby/regexp', false, false, Nodes::Scalar::ANY 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 + + 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? |