aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2007-05-28 23:33:54 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2007-05-28 23:33:54 +0000
commit428d1f67dab05b84330c7fc66bff0202aee91bd8 (patch)
treea5f38dbd990030e29d6891d7a3b23fc37275e705 /activesupport/lib/active_support
parentd8b67f7fe1ff281a7ba00bd187fe938a12bb5566 (diff)
downloadrails-428d1f67dab05b84330c7fc66bff0202aee91bd8.tar.gz
rails-428d1f67dab05b84330c7fc66bff0202aee91bd8.tar.bz2
rails-428d1f67dab05b84330c7fc66bff0202aee91bd8.zip
Multibyte strings respond_to the String methods they proxy so they can be duck-typed. Closes #6549.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6882 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r--activesupport/lib/active_support/multibyte/chars.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/multibyte/chars.rb b/activesupport/lib/active_support/multibyte/chars.rb
index 901815092d..65114415eb 100644
--- a/activesupport/lib/active_support/multibyte/chars.rb
+++ b/activesupport/lib/active_support/multibyte/chars.rb
@@ -41,6 +41,12 @@ module ActiveSupport::Multibyte #:nodoc:
@string
end
+ # Make duck-typing with String possible
+ def respond_to?(method)
+ super || @string.respond_to?(method) || handler.respond_to?(method) ||
+ (method.to_s =~ /(.*)!/ && handler.respond_to?($1)) || false
+ end
+
# Create a new Chars instance.
def initialize(str)
@string = str.respond_to?(:string) ? str.string : str