class Mutability::Mutable

Attributes

original[R]
self[RW]

Public Class Methods

new(original) click to toggle source
# File lib/mutability/mutable.rb, line 28
def initialize(original)
  @original = original.freeze   # don't modify, even accidentally!
  revert!
end

Public Instance Methods

freeze!() click to toggle source
# File lib/mutability/mutable.rb, line 33
def freeze!
  @original = @self.dup.freeze
end
respond_to?(method) click to toggle source
Calls superclass method
# File lib/mutability/mutable.rb, line 41
def respond_to?(method)
  super || @self.respond_to?(method)
end
revert!() click to toggle source
# File lib/mutability/mutable.rb, line 37
def revert!
  @self = @original.dup         # we want an unfrozen copy, so cannot clone
end

Private Instance Methods

method_missing(sym, *args, &block) click to toggle source

cheap delegation

# File lib/mutability/mutable.rb, line 48
def method_missing(sym, *args, &block)
  @self.send(sym, *args, &block)
end