diff options
-rw-r--r-- | CHANGELOG.rdoc | 8 | ||||
-rw-r--r-- | lib/psych/visitors/yaml_tree.rb | 5 | ||||
-rw-r--r-- | test/psych/test_string.rb | 5 |
3 files changed, 16 insertions, 2 deletions
diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc index efe4f9c..5ca006a 100644 --- a/CHANGELOG.rdoc +++ b/CHANGELOG.rdoc @@ -1,3 +1,11 @@ +Wed Oct 30 03:08:24 2013 Aaron Patterson <aaron@tenderlovemaking.com> + + * ext/psych/lib/psych/visitors/yaml_tree.rb: string subclasses should + not be considered to be binary. Fixes Psych / GH 166 + https://github.com/tenderlove/psych/issues/166 + + * test/psych/test_string.rb: test for fix + Fri Sep 20 23:44:07 2013 Zachary Scott <e@zzak.io> * ext/psych/yaml/yaml.h: [DOC] fix typo by @GreenGeorge [Fixes GH-161] diff --git a/lib/psych/visitors/yaml_tree.rb b/lib/psych/visitors/yaml_tree.rb index f8bece6..65cbba0 100644 --- a/lib/psych/visitors/yaml_tree.rb +++ b/lib/psych/visitors/yaml_tree.rb @@ -267,8 +267,7 @@ module Psych def binary? string (string.encoding == Encoding::ASCII_8BIT && !string.ascii_only?) || string.index("\x00") || - string.count("\x00-\x7F", "^ -~\t\r\n").fdiv(string.length) > 0.3 || - string.class != String + string.count("\x00-\x7F", "^ -~\t\r\n").fdiv(string.length) > 0.3 end private :binary? @@ -301,6 +300,8 @@ module Psych if ivars.empty? unless o.class == ::String tag = "!ruby/string:#{o.class}" + plain = false + quote = false end @emitter.scalar str, nil, tag, plain, quote, style else diff --git a/test/psych/test_string.rb b/test/psych/test_string.rb index 025ef95..84326da 100644 --- a/test/psych/test_string.rb +++ b/test/psych/test_string.rb @@ -20,6 +20,11 @@ module Psych assert_match(/---\s*"/, yaml) end + def test_cycle_x + str = X.new 'abc' + assert_cycle str + end + def test_dash_dot assert_cycle '-.' assert_cycle '+.' |