Class: NRSER::Props::Storage::InstanceVariable

Inherits:
Object
  • Object
show all
Defined in:
lib/nrser/props/storage/instance_variable.rb

Constant Summary collapse

DEFAULT_VAR_NAME =
:@__NRSER_prop_values

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(var_name: DEFAULT_VAR_NAME, sub_storage:) ⇒ InstanceVariable

Returns a new instance of InstanceVariable.



33
34
35
36
37
# File 'lib/nrser/props/storage/instance_variable.rb', line 33

def initialize  var_name: DEFAULT_VAR_NAME,
                sub_storage:
  @var_name = var_name.to_sym
  @sub_storage = sub_storage
end

Instance Attribute Details

#sub_storageattr_type (readonly)

TODO document ‘sub_storage` attribute.

Returns:

  • (attr_type)


30
31
32
# File 'lib/nrser/props/storage/instance_variable.rb', line 30

def sub_storage
  @sub_storage
end

#var_nameSymbol (readonly)

TODO document ‘var_name` attribute.

Returns:



23
24
25
# File 'lib/nrser/props/storage/instance_variable.rb', line 23

def var_name
  @var_name
end

Instance Method Details

#get(instance, prop) ⇒ Object



73
74
75
# File 'lib/nrser/props/storage/instance_variable.rb', line 73

def get instance, prop
  sub_storage.get instance.instance_variable_get( @var_name ), prop
end

#immutable?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/nrser/props/storage/instance_variable.rb', line 63

def immutable?
  sub_storage.immutable?
end

#init(instance, collection) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/nrser/props/storage/instance_variable.rb', line 43

def init instance, collection
  if init? instance
    raise NRSER::ConflictError.new binding.erb <<~END
      Already initialized!
      
      Instance:
      
          <%= instance.pretty_inspect %>
      
      Collection:
      
          <%= collection.pretty_inspect %>
      
    END
  end
  
  instance.instance_variable_set @var_name, collection
end

#init?(instance) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/nrser/props/storage/instance_variable.rb', line 68

def init? instance
  instance.instance_variable_defined? @var_name
end

#put(instance, prop, value) ⇒ Object



78
79
80
81
82
83
# File 'lib/nrser/props/storage/instance_variable.rb', line 78

def put instance, prop, value
  sub_storage.put \
    instance.instance_variable_get( @var_name ),
    prop,
    value
end