From 935f8215371d68f36950c709061e5876ecadaa89 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Thu, 27 Sep 2007 10:13:50 +0000 Subject: Object#copy_instance_variables_from Ruby 1.9 compat git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7654 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../active_support/core_ext/object/instance_variables.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'activesupport/lib/active_support/core_ext/object/instance_variables.rb') diff --git a/activesupport/lib/active_support/core_ext/object/instance_variables.rb b/activesupport/lib/active_support/core_ext/object/instance_variables.rb index 72eaed70b6..e07eb76c1d 100644 --- a/activesupport/lib/active_support/core_ext/object/instance_variables.rb +++ b/activesupport/lib/active_support/core_ext/object/instance_variables.rb @@ -5,4 +5,18 @@ class Object instance_variables.include?(variable.to_s) end end + + def instance_values #:nodoc: + instance_variables.inject({}) do |values, name| + values[name.to_s[1..-1]] = instance_variable_get(name) + values + end + end + + def copy_instance_variables_from(object, exclude = []) #:nodoc: + exclude += object.protected_instance_variables if object.respond_to? :protected_instance_variables + + vars = object.instance_variables.map(&:to_s) - exclude.map(&:to_s) + vars.each { |name| instance_variable_set(name, object.instance_variable_get(name)) } + end end -- cgit v1.2.3