Class: R10K::Settings::Container
- Inherits:
-
Object
- Object
- R10K::Settings::Container
- Defined in:
- lib/r10k/settings/container.rb
Overview
Defines a collection for application settings
This implements a hierarchical interface to application settings. Containers can define an optional parent container that will be used for default options if those options aren’t set on the given container.
Defined Under Namespace
Classes: InvalidKey
Instance Attribute Summary collapse
-
#valid_keys ⇒ Set<Symbol>
All valid keys defined on the container or parent container.
Instance Method Summary collapse
-
#[](key) ⇒ Object?
Look up a value in the container.
-
#[]=(key, value) ⇒ Object
Set a value on the container.
-
#add_valid_key(key) ⇒ void
Define a valid container key.
-
#initialize(parent = nil) ⇒ Container
constructor
A new instance of Container.
-
#reset! ⇒ void
Clear all existing settings in this container.
-
#valid_key?(key) ⇒ true, false
Determine if a key is a valid setting.
Constructor Details
#initialize(parent = nil) ⇒ Container
Returns a new instance of Container.
13 14 15 16 17 18 |
# File 'lib/r10k/settings/container.rb', line 13 def initialize(parent = nil) @parent = parent @valid_keys = Set.new @settings = {} end |
Instance Attribute Details
#valid_keys ⇒ Set<Symbol>
Returns All valid keys defined on the container or parent container.
10 11 12 |
# File 'lib/r10k/settings/container.rb', line 10 def valid_keys @valid_keys end |
Instance Method Details
#[](key) ⇒ Object?
Look up a value in the container. The lookup checks the current container, and then falls back to the parent container if it’s given.
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/r10k/settings/container.rb', line 29 def [](key) validate_key! key if @settings[key] @settings[key] elsif @parent and (pkey = @parent[key]) @settings[key] = pkey pkey end end |
#[]=(key, value) ⇒ Object
Set a value on the container
47 48 49 50 51 |
# File 'lib/r10k/settings/container.rb', line 47 def []=(key, value) validate_key! key @settings[key] = value end |
#add_valid_key(key) ⇒ void
This should only be used by R10K::Settings::Container#R10K#R10K::Settings#R10K::Settings::ClassSettings
This method returns an undefined value.
Define a valid container key
59 60 61 |
# File 'lib/r10k/settings/container.rb', line 59 def add_valid_key(key) @valid_keys.add(key) end |
#reset! ⇒ void
This method returns an undefined value.
Clear all existing settings in this container. Valid settings are left alone.
79 80 81 |
# File 'lib/r10k/settings/container.rb', line 79 def reset! @settings = {} end |
#valid_key?(key) ⇒ true, false
Determine if a key is a valid setting.
68 69 70 71 72 73 74 75 |
# File 'lib/r10k/settings/container.rb', line 68 def valid_key?(key) if @valid_keys.include?(key) true elsif @parent and @parent.valid_key?(key) @valid_keys.add(key) true end end |