Permalink
Browse files

Add ActiveSupport::Multibyte::Chars#ord method so that it returns cor…

…rect 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>
  • Loading branch information...
1 parent fc037be commit 032902146a6ff8a194901ba91cd4d6b00b9eb411 Jason Cheow committed with jeremy Nov 26, 2008
View
@@ -1,4 +1,9 @@
-*2.2 (November 21st, 2008)*
+*2.2.3 (next release)*
+
+* Multibyte: add multibyte-safe Chars#ord rather than falling back to String#ord. #1483 [Jason Cheow]
+
+
+*2.2.2 (November 21st, 2008)*
* TimeZone offset tests: use current_period, to ensure TimeZone#utc_offset is up-to-date [Geoff Buesing]
@@ -344,6 +344,14 @@ def slice(*args)
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 @@ def test_slice_should_throw_exceptions_on_invalid_arguments
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

0 comments on commit 0329021

Please sign in to comment.