brainopia (owner)

Revisions

gist: 29706 Download_button fork
public
Public Clone URL: git://gist.github.com/29706.git
Embed All Files: show embed
Ruby #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# based on http://www.ruby-doc.org/stdlib/libdoc/delegate/rdoc/index.html
require 'delegate'
 
class SimpleDelegator < Delegator
  def initialize(obj)
    super # pass obj to Delegator constructor, required
    @_sd_obj = obj # store obj for future use
  end
 
  def __getobj__
    @_sd_obj # return object we are delegating to, required
  end
 
  def __setobj__(obj)
    @_sd_obj = obj # change delegation object, a feature we're providing
  end
end
 
proxy_object = SimpleDelegator.new []
 
proxy_object.push 'first', 'second'
p proxy_object.size # => 2
p proxy_object # => ["first", "second"]
 
proxy_object.__setobj__ 'hey'
p proxy_object # => "hey"