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