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