class NRSER::Props::Storage::InstanceVariables

@todo document NRSER::Props::Storage::Key module.

Public Class Methods

new(immutable: @immutable = !!immutable) click to toggle source
# File lib/nrser/props/storage/instance_variables.rb, line 33
def initialize immutable:
  @immutable = !!immutable
end

Public Instance Methods

get(instance, prop) click to toggle source
# File lib/nrser/props/storage/instance_variables.rb, line 43
def get instance, prop
  instance.instance_variable_get "@#{ prop.name }"
end
immutable?() click to toggle source
# File lib/nrser/props/storage/instance_variables.rb, line 38
def immutable?
  @immutable
end
put(instance, prop, value) click to toggle source
# File lib/nrser/props/storage/instance_variables.rb, line 48
  def put instance, prop, value
    if immutable?
      raise RuntimeError.new binding.erb <<~END
        Properties of #{ instance.class.safe_name } are immutable.
        
        Tried to set prop #{ prop.name } to value
        
            <%= value.pretty_inspect %>
        
        in instance
        
            <%= instance.pretty_inspect %>
        
      END
    end
    
    instance.instance_variable_set "@#{ prop.name }", value
  end