summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Eli McIlvain <joe.eli.mac@gmail.com>2015-01-15 18:08:50 -0800
committerJoe Eli McIlvain <joe.eli.mac@gmail.com>2015-01-15 18:09:49 -0800
commit461a56db2e64566d166ff62265fedad0752990d2 (patch)
tree412cf229854cf7260fdb4f222c239e5415f3f0a5
parenta1656129c40a6c27a387a0eb45541a0a3a4dd948 (diff)
downloadpsych-461a56db2e64566d166ff62265fedad0752990d2.tar.gz
Only dump ivars for subclasses of String, not for String.
With cf0dd2b93f1552a3c452a0bfa0e996f441d5e27e, fixes #217.
-rw-r--r--lib/psych/visitors/yaml_tree.rb9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/psych/visitors/yaml_tree.rb b/lib/psych/visitors/yaml_tree.rb
index 35ebb27..c1039c6 100644
--- a/lib/psych/visitors/yaml_tree.rb
+++ b/lib/psych/visitors/yaml_tree.rb
@@ -325,10 +325,11 @@ module Psych
style = Nodes::Scalar::SINGLE_QUOTED
end
- ivars = find_ivars o
+ is_primitive = o.class == ::String
+ ivars = find_ivars o, is_primitive
if ivars.empty?
- unless o.class == ::String
+ unless is_primitive
tag = "!ruby/string:#{o.class}"
plain = false
quote = false
@@ -533,7 +534,7 @@ module Psych
end
# FIXME: remove this method once "to_yaml_properties" is removed
- def find_ivars target
+ def find_ivars target, is_primitive=false
begin
loc = target.method(:to_yaml_properties).source_location.first
unless loc.start_with?(Psych::DEPRECATED) || loc.end_with?('rubytypes.rb')
@@ -547,7 +548,7 @@ module Psych
# and it's OK to skip it since it's only to emit a warning.
end
- target.instance_variables
+ is_primitive ? [] : target.instance_variables
end
def register target, yaml_obj