Class: R10K::Settings::Container

Inherits:
Object
  • Object
show all
Defined in:
lib/r10k/settings/container.rb

Overview

if those options aren’t set on the given container.

Defined Under Namespace

Classes: InvalidKey

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent = nil) ⇒ Container

Returns a new instance of Container.

Parameters:



14
15
16
17
18
19
# File 'lib/r10k/settings/container.rb', line 14

def initialize(parent = nil)
  @parent = parent

  @valid_keys = Set.new
  @settings = {}
end

Instance Attribute Details

#valid_keysSet<Symbol>

Returns All valid keys defined on the container or parent container.

Returns:

  • (Set<Symbol>)

    All valid keys defined on the container or parent container.



11
12
13
# File 'lib/r10k/settings/container.rb', line 11

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.

Parameters:

  • key (Symbol)

    The lookup key

Returns:

  • (Object, nil)

    The retrieved value if present.

Raises:



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/r10k/settings/container.rb', line 30

def [](key)
  validate_key! key

  if @settings[key]
    @settings[key]
  elsif @parent && (pkey = @parent[key])
    begin
      @settings[key] = pkey.dup
    rescue TypeError
      @settings[key] = pkey
    end
    @settings[key]
  end
end

#[]=(key, value) ⇒ Object

Set a value on the container

Parameters:

  • key (Symbol)

    The lookup key

  • value (Object)

    The value to store in the container

Raises:



52
53
54
55
56
# File 'lib/r10k/settings/container.rb', line 52

def []=(key, value)
  validate_key! key

  @settings[key] = value
end

#add_valid_key(key) ⇒ void

Note:

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

Parameters:

  • key (Symbol)


64
65
66
# File 'lib/r10k/settings/container.rb', line 64

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.



84
85
86
# File 'lib/r10k/settings/container.rb', line 84

def reset!
  @settings = {}
end

#valid_key?(key) ⇒ true, false

Determine if a key is a valid setting.

Parameters:

  • key (Symbol)

Returns:

  • (true, false)


73
74
75
76
77
78
79
80
# File 'lib/r10k/settings/container.rb', line 73

def valid_key?(key)
  if @valid_keys.include?(key)
    true
  elsif @parent and @parent.valid_key?(key)
    @valid_keys.add(key)
    true
  end
end