deprecate String#encoding_aware? and remove its usage

This commit is contained in:
Sergey Nartimov 2011-12-24 15:57:54 +03:00
parent a5fa310f40
commit 5ca86ac8f9
25 changed files with 118 additions and 169 deletions

View File

@ -13,14 +13,11 @@ end
require 'active_support/core_ext/kernel/reporting'
require 'active_support/core_ext/string/encoding'
if "ruby".encoding_aware?
# These are the normal settings that will be set up by Railties
# TODO: Have these tests support other combinations of these values
silence_warnings do
# These are the normal settings that will be set up by Railties
# TODO: Have these tests support other combinations of these values
silence_warnings do
Encoding.default_internal = "UTF-8"
Encoding.default_external = "UTF-8"
end
end
lib = File.expand_path("#{File.dirname(__FILE__)}/../lib")

View File

@ -23,7 +23,7 @@ module HTML #:nodoc:
# Create a new Tokenizer for the given text.
def initialize(text)
text.encode! if text.encoding_aware?
text.encode!
@scanner = StringScanner.new(text)
@position = 0
@line = 0

View File

@ -41,8 +41,6 @@ module ActionDispatch
# you'll get a weird error down the road, but our form handling
# should really prevent that from happening
def encode_params(params)
return params unless "ruby".encoding_aware?
if params.is_a?(String)
return params.force_encoding("UTF-8").encode!
elsif !params.is_a?(Hash)

View File

@ -22,8 +22,8 @@ module ActionDispatch
private
def encode_filename(filename)
# Encode the filename in the utf8 encoding, unless it is nil or we're in 1.8
if "ruby".encoding_aware? && filename
# Encode the filename in the utf8 encoding, unless it is nil
if filename
filename.force_encoding("UTF-8").encode!
else
filename

View File

@ -584,7 +584,7 @@ module ActionDispatch
@router.recognize(req) do |route, matches, params|
params.each do |key, value|
if value.is_a?(String)
value = value.dup.force_encoding(Encoding::BINARY) if value.encoding_aware?
value = value.dup.force_encoding(Encoding::BINARY)
params[key] = URI.parser.unescape(value)
end
end

View File

@ -4,7 +4,7 @@ module ActionView
class OutputBuffer < ActiveSupport::SafeBuffer #:nodoc:
def initialize(*)
super
encode! if encoding_aware?
encode!
end
def <<(value)

View File

@ -14,11 +14,7 @@ module ActionView
"'" => "\\'"
}
if "ruby".encoding_aware?
JS_ESCAPE_MAP["\342\200\250".force_encoding('UTF-8').encode!] = '&#x2028;'
else
JS_ESCAPE_MAP["\342\200\250"] = '&#x2028;'
end
# Escapes carriage returns and single and double quotes for JavaScript segments.
#

View File

@ -184,7 +184,7 @@ module ActionView
# before passing the source on to the template engine, leaving a
# blank line in its stead.
def encode!
return unless source.encoding_aware? && source.encoding == Encoding::BINARY
return unless source.encoding == Encoding::BINARY
# Look for # encoding: *. If we find one, we'll encode the
# String in that encoding, otherwise, we'll use the
@ -265,7 +265,6 @@ module ActionView
end
end_src
if source.encoding_aware?
# Make sure the source is in the encoding of the returned code
source.force_encoding(code.encoding)
@ -279,7 +278,6 @@ module ActionView
unless source.valid_encoding?
raise WrongEncodingError.new(@source, Encoding.default_internal)
end
end
begin
mod.module_eval(source, identifier, 0)

View File

@ -67,7 +67,6 @@ module ActionView
end
def call(template)
if template.source.encoding_aware?
# First, convert to BINARY, so in case the encoding is
# wrong, we can still find an encoding tag
# (<%# encoding %>) inside the String using a regular
@ -81,9 +80,6 @@ module ActionView
# Always make sure we return a String in the default_internal
erb.encode!
else
erb = template.source.dup
end
self.class.erb_implementation.new(
erb,

View File

@ -14,14 +14,11 @@ ENV['TMPDIR'] = File.join(File.dirname(__FILE__), 'tmp')
require 'active_support/core_ext/kernel/reporting'
require 'active_support/core_ext/string/encoding'
if "ruby".encoding_aware?
# These are the normal settings that will be set up by Railties
# TODO: Have these tests support other combinations of these values
silence_warnings do
# These are the normal settings that will be set up by Railties
# TODO: Have these tests support other combinations of these values
silence_warnings do
Encoding.default_internal = "UTF-8"
Encoding.default_external = "UTF-8"
end
end
require 'test/unit'

View File

@ -146,8 +146,6 @@ class UrlEncodedParamsParsingTest < ActionDispatch::IntegrationTest
end
def assert_utf8(object)
return unless "ruby".encoding_aware?
correct_encoding = Encoding.default_internal
unless object.is_a?(Hash)

View File

@ -6,9 +6,6 @@ class ResponseTest < ActiveSupport::TestCase
end
def test_response_body_encoding
# FIXME: remove this conditional on Rails 4.0
return unless "<3".encoding_aware?
body = ["hello".encode('utf-8')]
response = ActionDispatch::Response.new 200, {}, body
assert_equal Encoding::UTF_8, response.body.encoding

View File

@ -13,12 +13,10 @@ module ActionDispatch
assert_equal 'foo', uf.original_filename
end
if "ruby".encoding_aware?
def test_filename_should_be_in_utf_8
uf = Http::UploadedFile.new(:filename => 'foo', :tempfile => Object.new)
assert_equal "UTF-8", uf.original_filename.encoding.to_s
end
end
def test_content_type
uf = Http::UploadedFile.new(:type => 'foo', :tempfile => Object.new)

View File

@ -28,11 +28,7 @@ class JavaScriptHelperTest < ActionView::TestCase
assert_equal %(This \\"thing\\" is really\\n netos\\'), escape_javascript(%(This "thing" is really\n netos'))
assert_equal %(backslash\\\\test), escape_javascript( %(backslash\\test) )
assert_equal %(dont <\\/close> tags), escape_javascript(%(dont </close> tags))
if "ruby".encoding_aware?
assert_equal %(unicode &#x2028; newline), escape_javascript(%(unicode \342\200\250 newline).force_encoding('UTF-8').encode!)
else
assert_equal %(unicode &#x2028; newline), escape_javascript(%(unicode \342\200\250 newline))
end
assert_equal %(dont <\\/close> tags), j(%(dont </close> tags))
end

View File

@ -114,7 +114,6 @@ class TestERBTemplate < ActiveSupport::TestCase
end
end
if "ruby".encoding_aware?
def test_resulting_string_is_utf8
@template = new_template
assert_equal Encoding::UTF_8, render.encoding
@ -176,5 +175,4 @@ class TestERBTemplate < ActiveSupport::TestCase
ensure
silence_warnings { Encoding.default_external = old }
end
end
end

View File

@ -60,8 +60,6 @@ module ActiveModel
if value.kind_of?(String)
if options[:tokenizer]
options[:tokenizer].call(value)
elsif !value.encoding_aware?
value.mb_chars
end
end || value
end

View File

@ -201,7 +201,6 @@ module ActiveRecord
end
end
if "<3".encoding_aware?
def type_cast(value, column) # :nodoc:
return value.to_f if BigDecimal === value
return super unless String === value
@ -214,13 +213,6 @@ module ActiveRecord
end
value
end
else
def type_cast(value, column) # :nodoc:
return super unless BigDecimal === value
value.to_f
end
end
# DATABASE STATEMENTS ======================================

View File

@ -23,8 +23,6 @@ module ActiveRecord
end
def test_column_types
return skip('only test encoding on 1.9') unless "<3".encoding_aware?
owner = Owner.create!(:name => "hello".encode('ascii-8bit'))
owner.reload
select = Owner.columns.map { |c| "typeof(#{c.name})" }.join ', '

View File

@ -13,11 +13,9 @@ class SchemaDumperTest < ActiveRecord::TestCase
@stream.string
end
if "string".encoding_aware?
def test_magic_comment
assert_match "# encoding: #{@stream.external_encoding.name}", standard_dump
end
end
def test_schema_dump
output = standard_dump

View File

@ -165,7 +165,7 @@ module ActiveSupport
# characters properly.
def escape_key(key)
key = key.to_s.dup
key = key.force_encoding("BINARY") if key.encoding_aware?
key = key.force_encoding("BINARY")
key = key.gsub(ESCAPE_KEY_CHARS){ |match| "%#{match.getbyte(0).to_s(16).upcase}" }
key = "#{key[0, 213]}:md5:#{Digest::MD5.hexdigest(key)}" if key.size > 250
key

View File

@ -1,5 +1,8 @@
require 'active_support/deprecation'
class String
def encoding_aware?
ActiveSupport::Deprecation.warn 'String#encoding_aware? is deprecated', caller
true
end
end

View File

@ -8,7 +8,7 @@ module ActiveSupport
class Stream < StringIO
def initialize(*)
super
set_encoding "BINARY" if "".encoding_aware?
set_encoding "BINARY"
end
def close; rewind; end
end

View File

@ -445,8 +445,10 @@ class OutputSafetyTest < ActiveSupport::TestCase
end
test 'knows whether it is encoding aware' do
assert_deprecated do
assert 'ruby'.encoding_aware?
end
end
test "call to_param returns a normal string" do
string = @string.html_safe

View File

@ -9,10 +9,7 @@ class GzipTest < Test::Unit::TestCase
def test_compress_should_return_a_binary_string
compressed = ActiveSupport::Gzip.compress('')
if "".encoding_aware?
assert_equal Encoding.find('binary'), compressed.encoding
end
assert !compressed.blank?, "a compressed blank string should not be blank"
end
end

View File

@ -65,18 +65,10 @@ module Rails
def encoding=(value)
@encoding = value
if "ruby".encoding_aware?
silence_warnings do
Encoding.default_external = value
Encoding.default_internal = value
end
else
$KCODE = value
if $KCODE == "NONE"
raise "The value you specified for config.encoding is " \
"invalid. The possible values are UTF8, SJIS, or EUC"
end
end
end
def paths