class Sire::ImmutableDelegator

Attributes

obj[R]

Public Class Methods

new(obj) click to toggle source
# File lib/sire/immutable_delegator.rb, line 3
def initialize(obj)
  @obj = obj
end

Public Instance Methods

method_missing(*args, &b) click to toggle source
Calls superclass method
# File lib/sire/immutable_delegator.rb, line 7
def method_missing(*args, &b)
  return super unless obj.respond_to?(args.first)
  res = obj.send(*args, &b)
  res.class == obj.class ? create_new(res) : res
end

Private Instance Methods

create_new(res) click to toggle source
# File lib/sire/immutable_delegator.rb, line 17
def create_new(res)
  self.class.new(res)
end
respond_to_missing?(meth, privates = false) click to toggle source
Calls superclass method
# File lib/sire/immutable_delegator.rb, line 21
def respond_to_missing?(meth, privates = false)
  obj.respond_to?(meth, privates) || super
end