Class: SuperStack::Manager
- Inherits:
-
Object
- Object
- SuperStack::Manager
- Includes:
- SuperStack::MergePolicies::PolicyHandler
- Defined in:
- lib/super_stack/manager.rb
Constant Summary collapse
- DEFAULT_PRIORITY_INTERVAL =
10- DEFAULT_MERGE_POLICY =
SuperStack::MergePolicies::StandardMergePolicy
Instance Attribute Summary collapse
-
#layers ⇒ Object
readonly
Returns the value of attribute layers.
-
#write_layer ⇒ Object
Returns the value of attribute write_layer.
Attributes included from SuperStack::MergePolicies::PolicyHandler
Instance Method Summary collapse
- #<<(layer) ⇒ Object
- #[](filter = nil) ⇒ Object
- #[]=(key, value) ⇒ Object
- #add_layer(layer) ⇒ Object
-
#initialize ⇒ Manager
constructor
A new instance of Manager.
- #reload_layers ⇒ Object
- #to_a ⇒ Object
Constructor Details
#initialize ⇒ Manager
Returns a new instance of Manager.
13 14 15 16 |
# File 'lib/super_stack/manager.rb', line 13 def initialize @layers = {} self.default_merge_policy = DEFAULT_MERGE_POLICY end |
Instance Attribute Details
#layers ⇒ Object (readonly)
Returns the value of attribute layers.
11 12 13 |
# File 'lib/super_stack/manager.rb', line 11 def layers @layers end |
#write_layer ⇒ Object
Returns the value of attribute write_layer.
11 12 13 |
# File 'lib/super_stack/manager.rb', line 11 def write_layer @write_layer end |
Instance Method Details
#<<(layer) ⇒ Object
63 64 65 |
# File 'lib/super_stack/manager.rb', line 63 def <<(layer) add_layer layer end |
#[](filter = nil) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/super_stack/manager.rb', line 34 def [](filter=nil) layers = to_a return [] if layers.empty? return layers[0] if layers.count == 1 first_layer = layers.shift res = layers.inject(first_layer) do |stack, layer| policy_to_apply = layer.merge_policy.nil? ? default_merge_policy : layer.merge_policy policy_to_apply.merge stack, layer end if filter.nil? res else res[filter] end end |
#[]=(key, value) ⇒ Object
29 30 31 32 |
# File 'lib/super_stack/manager.rb', line 29 def []=(key,value) raise 'No write layer specified' if write_layer.nil? write_layer[key] = value end |
#add_layer(layer) ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'lib/super_stack/manager.rb', line 54 def add_layer(layer) if layer.is_a? Hash and not layer.class.included_modules.include? SuperStack::LayerWrapper SuperStack::LayerWrapper.from_hash layer end set_valid_name_for layer if layers.keys.include? layer.name layer.priority = get_unused_priority if layer.priority.nil? layers[layer.name] = layer end |
#reload_layers ⇒ Object
67 68 69 |
# File 'lib/super_stack/manager.rb', line 67 def reload_layers layers.values.each &:reload end |
#to_a ⇒ Object
50 51 52 |
# File 'lib/super_stack/manager.rb', line 50 def to_a layers.values.sort end |