Create a new class and override the method_missing method : method_missing « Reflection « Ruby

Home
Ruby
1.ActiveRecord
2.Array
3.CGI
4.Class
5.Collections
6.Database
7.Date
8.Design Patterns
9.Development
10.File Directory
11.GUI
12.Hash
13.Language Basics
14.Method
15.Network
16.Number
17.Rails
18.Range
19.Reflection
20.Statement
21.String
22.Threads
23.Time
24.Tk
25.Unit Test
26.Windows Platform
27.XML
Ruby » Reflection » method_missing 




Create a new class and override the method_missing method


class BackwardsString
  def initialize(s)
   @s = s
  end

  def method_missing(m, *args, &block)
    result = @s.send(m, *args, &block)
    result.respond_to?(:to_str? BackwardsString.new(result: result
  end

  def to_s
    @s.reverse
  end

  def inspect
    to_s
  end
end

s = BackwardsString.new("I'm backwards.")             # => .sdrawkcab m'I
s.size                                                # => 14
s.upcase                                              # => .SDRAWKCAB M'I
s.reverse                                             # => I'm backwards.
s.no_such_method
# NoMethodError: undefined method 'no_such_method' for "I'm backwards.":String

 














Related examples in the same category
1.Convert all system command to all class method
2.Responding to Calls to Undefined Methods
3.Override method_missing method to provide meaningful error message
4.If method does not exist, call the default one
5.Create new method dynamically
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.