From aa4ad404c6aa4feccc69b8d7222bcfd1b1903215 Mon Sep 17 00:00:00 2001
From: Jeremy Kemper <jeremy@bitsweat.net>
Date: Sat, 15 Dec 2007 02:28:20 +0000
Subject: Ruby 1.9 compat: shadowed vars, kcode

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8402 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
---
 .../lib/active_support/multibyte/chars.rb          | 10 ++++++++--
 activesupport/test/core_ext/hash_ext_test.rb       |  6 +++---
 .../core_ext/module/attribute_aliasing_test.rb     |  8 ++++++--
 activesupport/test/json/encoding_test.rb           | 22 +++++++++++++++++-----
 4 files changed, 34 insertions(+), 12 deletions(-)

diff --git a/activesupport/lib/active_support/multibyte/chars.rb b/activesupport/lib/active_support/multibyte/chars.rb
index 65114415eb..b30214d947 100644
--- a/activesupport/lib/active_support/multibyte/chars.rb
+++ b/activesupport/lib/active_support/multibyte/chars.rb
@@ -119,8 +119,14 @@ module ActiveSupport::Multibyte #:nodoc:
       
       # +utf8_pragma+ checks if it can send this string to the handlers. It makes sure @string isn't nil and $KCODE is
       # set to 'UTF8'.
-      def utf8_pragma?
-        !@string.nil? && ($KCODE == 'UTF8')
+      if RUBY_VERSION < '1.9'
+        def utf8_pragma?
+          !@string.nil? && ($KCODE == 'UTF8')
+        end
+      else
+        def utf8_pragma?
+          !@string.nil? && (Encoding.default_external == Encoding::UTF_8)
+        end
       end
   end
 end
diff --git a/activesupport/test/core_ext/hash_ext_test.rb b/activesupport/test/core_ext/hash_ext_test.rb
index 3763f47c68..4d01faa5d2 100644
--- a/activesupport/test/core_ext/hash_ext_test.rb
+++ b/activesupport/test/core_ext/hash_ext_test.rb
@@ -145,7 +145,7 @@ class HashExtTest < Test::Unit::TestCase
     assert_equal updated_with_mixed[:a], 1
     assert_equal updated_with_mixed['b'], 2
 
-    assert [updated_with_strings, updated_with_symbols, updated_with_mixed].all? {|hash| hash.keys.size == 2}
+    assert [updated_with_strings, updated_with_symbols, updated_with_mixed].all? { |h| h.keys.size == 2 }
   end
 
   def test_indifferent_merging
@@ -371,8 +371,8 @@ class HashToXmlTest < Test::Unit::TestCase
   end
 
   def test_one_level_with_yielding
-    xml = { :name => "David", :street => "Paulina" }.to_xml(@xml_options) do |xml|
-      xml.creator("Rails")
+    xml = { :name => "David", :street => "Paulina" }.to_xml(@xml_options) do |x|
+      x.creator("Rails")
     end
 
     assert_equal "<person>", xml.first(8)
diff --git a/activesupport/test/core_ext/module/attribute_aliasing_test.rb b/activesupport/test/core_ext/module/attribute_aliasing_test.rb
index 05f7a5c4ca..bd23879513 100644
--- a/activesupport/test/core_ext/module/attribute_aliasing_test.rb
+++ b/activesupport/test/core_ext/module/attribute_aliasing_test.rb
@@ -3,11 +3,15 @@ require File.dirname(__FILE__) + '/../../abstract_unit'
 module AttributeAliasing
   class Content
     attr_accessor :title, :Data
-  
+
+    def initialize
+      @title, @Data = nil, nil
+    end
+
     def title?
       !title.nil?
     end
-    
+
     def Data?
       !self.Data.nil?
     end
diff --git a/activesupport/test/json/encoding_test.rb b/activesupport/test/json/encoding_test.rb
index bf1b9893cb..4e4fe5703e 100644
--- a/activesupport/test/json/encoding_test.rb
+++ b/activesupport/test/json/encoding_test.rb
@@ -53,11 +53,10 @@ class TestJSONEncoding < Test::Unit::TestCase
   end
 
   def test_utf8_string_encoded_properly_when_kcode_is_utf8
-    old_kcode, $KCODE = $KCODE, 'UTF8'
-    assert_equal '"\\u20ac2.99"', '€2.99'.to_json
-    assert_equal '"\\u270e\\u263a"', '✎☺'.to_json
-  ensure
-    $KCODE = old_kcode
+    with_kcode 'UTF8' do
+      assert_equal '"\\u20ac2.99"', '€2.99'.to_json
+      assert_equal '"\\u270e\\u263a"', '✎☺'.to_json
+    end
   end
 
   def test_exception_raised_when_encoding_circular_reference
@@ -80,6 +79,19 @@ class TestJSONEncoding < Test::Unit::TestCase
   end
 
   protected
+    def with_kcode(code)
+      if RUBY_VERSION < '1.9'
+        begin
+          old_kcode, $KCODE = $KCODE, 'UTF8'
+          yield
+        ensure
+          $KCODE = old_kcode
+        end
+      else
+        yield
+      end
+    end
+
     def object_keys(json_object)
       json_object[1..-2].scan(/([^{}:,\s]+):/).flatten.sort
     end
-- 
cgit v1.2.3