Happy to see that ruby (2.0 at least) passes all the tests except the "baffle" one.
Edit: sadly, it doesn't.
Edit: sadly, it doesn't.
irb(main):001:0> RUBY_VERSION
=> "1.9.3"
irb(main):002:0> Rails.version
=> "3.2.14"
irb(main):003:0> # example 1
irb(main):004:0* example1 = "noe\u0308l".mb_chars
=> noël
irb(main):005:0> example1.reverse
=> lëon
irb(main):006:0> example1.compose.slice(0,3)
=> noë
irb(main):007:0> example1.g_length #grapheme_length
=> 4
irb(main):008:0> example1.compose.length
=> 4
irb(main):009:0> # example 2
irb(main):010:0* example2 = "😸😾".mb_chars
=> 😸😾
irb(main):011:0> example2.length
=> 2
irb(main):012:0> example2.slice(1,1)
=> 😾
irb(main):013:0> example2.reverse
=> 😾😸
irb(main):014:0> # example 3
irb(main):015:0* example3 = "baffle".mb_chars
=> baffle
irb(main):016:0> example3.upcase
=> BAfflE
irb(main):017:0> # example 4
irb(main):018:0* example4 = "noël".mb_chars
=> noël
irb(main):019:0> example4 == example1
=> false
irb(main):020:0> example4 == example1.compose
=> true "noe\u0308l".size # => 5
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin13.0.0]You code is wrong
"noe\u{0308}" # => "noë"