Skip to content

Commit

Permalink
* ext/psych/lib/psych/visitors/yaml_tree.rb: support dumping Encoding
Browse files Browse the repository at this point in the history
	  objects.

	* ext/psych/lib/psych/visitors/to_ruby.rb: support loading Encoding
	  objects.

	* test/psych/test_encoding.rb: add test

	* ext/psych/lib/psych.rb: add version
  • Loading branch information
tenderlove committed Mar 1, 2014
1 parent 5e6a486 commit 960d30e
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 0 deletions.
12 changes: 12 additions & 0 deletions CHANGELOG.rdoc
Original file line number Original file line Diff line number Diff line change
@@ -1,3 +1,15 @@
Sat Mar 1 11:08:00 2014 Aaron Patterson <aaron@tenderlovemaking.com>

* ext/psych/lib/psych/visitors/yaml_tree.rb: support dumping Encoding
objects.

* ext/psych/lib/psych/visitors/to_ruby.rb: support loading Encoding
objects.

* test/psych/test_encoding.rb: add test

* ext/psych/lib/psych.rb: add version

Wed Feb 5 10:11:36 2014 Zachary Scott <e@zzak.io> Wed Feb 5 10:11:36 2014 Zachary Scott <e@zzak.io>


* ext/psych/yaml/config.h: bump libyaml to 0.1.5 * ext/psych/yaml/config.h: bump libyaml to 0.1.5
Expand Down
2 changes: 2 additions & 0 deletions lib/psych/visitors/to_ruby.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ def deserialize o
class_loader.date_time class_loader.date_time
require 'date' require 'date'
@ss.parse_time(o.value).to_datetime @ss.parse_time(o.value).to_datetime
when '!ruby/encoding'
::Encoding.find o.value
when "!ruby/object:Complex" when "!ruby/object:Complex"
class_loader.complex class_loader.complex
Complex(o.value) Complex(o.value)
Expand Down
5 changes: 5 additions & 0 deletions lib/psych/visitors/yaml_tree.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -157,6 +157,11 @@ def visit_Psych_Omap o
@emitter.end_sequence @emitter.end_sequence
end end


def visit_Encoding o
tag = "!ruby/encoding"
@emitter.scalar o.name, nil, tag, false, false, Nodes::Scalar::ANY
end

def visit_Object o def visit_Object o
tag = Psych.dump_tags[o.class] tag = Psych.dump_tags[o.class]
unless tag unless tag
Expand Down
5 changes: 5 additions & 0 deletions test/psych/test_encoding.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ def setup
@emitter = Psych::Emitter.new @buffer @emitter = Psych::Emitter.new @buffer
end end


def test_dump_load_encoding_object
assert_cycle Encoding::US_ASCII
assert_cycle Encoding::UTF_8
end

def test_transcode_shiftjis def test_transcode_shiftjis
str = "こんにちは!" str = "こんにちは!"
loaded = Psych.load("--- こんにちは!".encode('SHIFT_JIS')) loaded = Psych.load("--- こんにちは!".encode('SHIFT_JIS'))
Expand Down

0 comments on commit 960d30e

Please sign in to comment.