# File lib/active_support/multibyte/chars.rb, line 78 def method_missing(m, *a, &b) begin # Simulate methods with a ! at the end because we can't touch the enclosed string from the handlers. if m.to_s =~ /^(.*)\!$/ && handler.respond_to?($1) result = handler.send($1, @string, *a, &b) if result == @string result = nil else @string.replace result end elsif handler.respond_to?(m) result = handler.send(m, @string, *a, &b) else result = @string.send(m, *a, &b) end rescue Handlers::EncodingError @string.replace handler.tidy_bytes(@string) retry end if result.kind_of?(String) result.chars else result end end