Class: TEF::ParameterStack::Override
- Inherits:
-
Object
- Object
- TEF::ParameterStack::Override
- Includes:
- Comparable
- Defined in:
- lib/tef/ParameterStack/Override.rb
Overview
Override class.
This class represents one ‘access point’ for the software, with which it can override certain values of the Stack it belongs to.
Using it is as simple as using a Hash:
Instance Attribute Summary collapse
-
#level ⇒ Numeric
readonly
Level of this Override.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#[](key) ⇒ Object
The value of this Override for a given key.
-
#[]=(key, new_value) ⇒ Object
Set the value for the given key.
-
#delete(key) ⇒ Object
Delete a value for the given key.
-
#destroy! ⇒ Object
Destroy this Override.
-
#include?(key) ⇒ true, false
Whether this Override includes a given key.
-
#initialize(stack, init_level = 0) ⇒ Override
constructor
Initialize an Override.
-
#keys ⇒ Array
List of keys.
Constructor Details
#initialize(stack, init_level = 0) ⇒ Override
Initialize an Override.
Values can be written into the Override immediately after creation. When the Override is no longer used, make sure to call #destroy!
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/tef/ParameterStack/Override.rb', line 37 def initialize(stack, init_level = 0) raise ArgumentError, 'Handler must be CoreStack!' unless stack.is_a? Stack @stack = stack @level = init_level; @overrides = {} @valid_until = nil; @stack.add_override self end |
Instance Attribute Details
#level ⇒ Numeric (readonly)
Returns Level of this Override. Higher levels mean higher priority. The highest-level override that is active for any given key will determine that key’s value!.
26 27 28 |
# File 'lib/tef/ParameterStack/Override.rb', line 26 def level @level end |
Instance Method Details
#<=>(other) ⇒ Object
107 108 109 110 |
# File 'lib/tef/ParameterStack/Override.rb', line 107 def <=>(other) return @level <=> other.level if other.level != @level return self.hash <=> other.hash end |
#[](key) ⇒ Object
This will not be the global key. Use Stack#[] to retrieve the currently active key.
Returns The value of this Override for a given key.
53 54 55 |
# File 'lib/tef/ParameterStack/Override.rb', line 53 def [](key) @overrides[key] end |
#[]=(key, new_value) ⇒ Object
Set the value for the given key. Setting nil as value causes this Override to relinquish control
61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/tef/ParameterStack/Override.rb', line 61 def []=(key, new_value) return if @overrides[key] == new_value if new_value.nil? delete(key) return end @overrides[key] = new_value @stack.override_claims self, key end |
#delete(key) ⇒ Object
Delete a value for the given key. Equivalent to calling #[]= nil
85 86 87 88 89 90 91 92 |
# File 'lib/tef/ParameterStack/Override.rb', line 85 def delete(key) return unless @overrides.include? key @overrides.delete key return unless @stack.active_overrides[key] == self @stack.recompute_single key end |
#destroy! ⇒ Object
Destroy this Override.
This function MUST be called if the user no longer needs this object. It relinquishes control over all the values that this Override formerly held.
Note that nothing else is modified, and Stack#add_override could be used to re-add this Override.
103 104 105 |
# File 'lib/tef/ParameterStack/Override.rb', line 103 def destroy! @stack.remove_override self end |
#include?(key) ⇒ true, false
Returns Whether this Override includes a given key.
74 75 76 |
# File 'lib/tef/ParameterStack/Override.rb', line 74 def include?(key) @overrides.include? key end |
#keys ⇒ Array
Returns List of keys.
79 80 81 |
# File 'lib/tef/ParameterStack/Override.rb', line 79 def keys @overrides.keys end |