提交 a6067276 编写于 作者: J Jeremy Kemper

Extract String#bytesize shim

上级 cdf60e46
unless '1.9'.respond_to?(:bytesize)
class String
alias :bytesize :size
end
end
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
=end =end
if RUBY_VERSION < '1.9' if RUBY_VERSION < '1.9'
require 'active_support/core_ext/string/bytesize'
# KeyError is raised by String#% when the string contains a named placeholder # KeyError is raised by String#% when the string contains a named placeholder
# that is not contained in the given arguments hash. Ruby 1.9 includes and # that is not contained in the given arguments hash. Ruby 1.9 includes and
...@@ -24,8 +25,6 @@ def initialize(message = nil) ...@@ -24,8 +25,6 @@ def initialize(message = nil)
# the meaning of the msgids using "named argument" instead of %s/%d style. # the meaning of the msgids using "named argument" instead of %s/%d style.
class String class String
# For older ruby versions, such as ruby-1.8.5
alias :bytesize :size unless instance_methods.find {|m| m.to_s == 'bytesize'}
alias :interpolate_without_ruby_19_syntax :% # :nodoc: alias :interpolate_without_ruby_19_syntax :% # :nodoc:
INTERPOLATION_PATTERN = Regexp.union( INTERPOLATION_PATTERN = Regexp.union(
...@@ -90,4 +89,4 @@ def %(args) ...@@ -90,4 +89,4 @@ def %(args)
end end
end end
end end
end end
\ No newline at end of file
...@@ -345,3 +345,10 @@ def test_string_interpolation_raises_an_argument_error_when_mixing_named_and_unn ...@@ -345,3 +345,10 @@ def test_string_interpolation_raises_an_argument_error_when_mixing_named_and_unn
assert_raises(ArgumentError) { "%{name} %f" % [1.0, 2.0] } assert_raises(ArgumentError) { "%{name} %f" % [1.0, 2.0] }
end end
end end
class StringBytesizeTest < Test::Unit::TestCase
def test_bytesize
assert_respond_to 'foo', :bytesize
assert_equal 3, 'foo'.bytesize
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册