Add ActiveSupport::Multibyte::Chars#ord method so that it returns correct Unicode value instead of falling back on String#ord in CoreExtensions, which is not multibyte compatible
[#1483 state:committed] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
This commit is contained in:
parent
9b22e56d89
commit
4e60eebae0
|
@ -1,5 +1,7 @@
|
|||
*2.3.0 [Edge]*
|
||||
|
||||
* Multibyte: add multibyte-safe Chars#ord rather than falling back to String#ord. #1483 [Jason Cheow]
|
||||
|
||||
* I18n support for Array#to_sentence. Introduces support.array.words_connector, .two_words_connector, and .last_word_connector translation keys. #1397 [Akira Matsuda]
|
||||
|
||||
* Added ActiveSupport::OrderedHash#each_key and ActiveSupport::OrderedHash#each_value #1410 [Christoffer Sawicki]
|
||||
|
|
|
@ -344,6 +344,14 @@ module ActiveSupport #:nodoc:
|
|||
end
|
||||
alias_method :[], :slice
|
||||
|
||||
# Converts first character in the string to Unicode value
|
||||
#
|
||||
# Example:
|
||||
# 'こんにちは'.mb_chars.ord #=> 12371
|
||||
def ord
|
||||
self.class.u_unpack(@wrapped_string)[0]
|
||||
end
|
||||
|
||||
# Convert characters in the string to uppercase.
|
||||
#
|
||||
# Example:
|
||||
|
|
|
@ -397,6 +397,10 @@ class MultibyteCharsUTF8BehaviourTest < Test::Unit::TestCase
|
|||
assert_raise(ArgumentError) { @chars.slice(1, 1, 1) }
|
||||
end
|
||||
|
||||
def test_ord_should_return_unicode_value_for_first_character
|
||||
assert_equal 12371, @chars.ord
|
||||
end
|
||||
|
||||
def test_upcase_should_upcase_ascii_characters
|
||||
assert_equal '', ''.mb_chars.upcase
|
||||
assert_equal 'ABC', 'aBc'.mb_chars.upcase
|
||||
|
|
Loading…
Reference in New Issue