summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-16 20:31:59 +0000
committertenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-16 20:31:59 +0000
commit5b5bbdbb35098e8e2dabe7af5d31526a54dc8bbd (patch)
treeb13a953eeabb87fbce34ecb67818b24164ca8298
parent2db7b7f3fe7de2b518d46ea11c26875f86d26136 (diff)
* ext/psych/lib/psych/core_ext.rb (yaml_as): supporting deprecated
"yaml_as" method * ext/syck/lib/syck/tag.rb: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27365 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--ext/psych/lib/psych/core_ext.rb13
-rw-r--r--ext/syck/lib/syck/tag.rb5
-rw-r--r--test/psych/test_deprecated.rb8
4 files changed, 31 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 68d027c5d4..dda8c7c8ef 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sat Apr 17 05:30:22 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/core_ext.rb (yaml_as): supporting deprecated
+ "yaml_as" method
+ * ext/syck/lib/syck/tag.rb: ditto
+
Sat Apr 17 05:25:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/psych/lib/psych/coder.rb (scalar): supporting deprecated methods
diff --git a/ext/psych/lib/psych/core_ext.rb b/ext/psych/lib/psych/core_ext.rb
index 9c55c707a1..8d3e8fb7b6 100644
--- a/ext/psych/lib/psych/core_ext.rb
+++ b/ext/psych/lib/psych/core_ext.rb
@@ -16,6 +16,19 @@ class Object
alias :to_yaml :psych_to_yaml
end
+class Module
+ def psych_yaml_as url
+ return if caller[0].end_with?('rubytypes.rb')
+ if $VERBOSE
+ warn "#{caller[0]}: yaml_as is deprecated, please use yaml_tag"
+ end
+ Psych.add_tag(url, self)
+ end
+
+ remove_method :yaml_as rescue nil
+ alias :yaml_as :psych_yaml_as
+end
+
module Kernel
def psych_y *objects
puts Psych.dump_stream(*objects)
diff --git a/ext/syck/lib/syck/tag.rb b/ext/syck/lib/syck/tag.rb
index bfb4dc714d..9c6de57953 100644
--- a/ext/syck/lib/syck/tag.rb
+++ b/ext/syck/lib/syck/tag.rb
@@ -56,7 +56,7 @@ class Module
# Adds a taguri _tag_ to a class, used when dumping or loading the class
# in YAML. See YAML::tag_class for detailed information on typing and
# taguris.
- def yaml_as( tag, sc = true )
+ def syck_yaml_as( tag, sc = true )
verbose, $VERBOSE = $VERBOSE, nil
class_eval <<-"END", __FILE__, __LINE__+1
attr_writer :taguri
@@ -78,6 +78,9 @@ class Module
ensure
$VERBOSE = verbose
end
+ remove_method :yaml_as rescue nil
+ alias :yaml_as :syck_yaml_as
+
# Transforms the subclass name into a name suitable for display
# in a subclassed tag.
def yaml_tag_class_name
diff --git a/test/psych/test_deprecated.rb b/test/psych/test_deprecated.rb
index e77d18c10c..41106ffcfd 100644
--- a/test/psych/test_deprecated.rb
+++ b/test/psych/test_deprecated.rb
@@ -139,5 +139,13 @@ module Psych
assert_equal 'some string', coder.scalar
assert_equal :scalar, coder.type
end
+
+ class YamlAs
+ yaml_as 'helloworld'
+ end
+
+ def test_yaml_as
+ assert_match(/helloworld/, Psych.dump(YamlAs.new))
+ end
end
end