Class: StructuredSetup

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
lib/pslm/structuredsetup.rb

Overview

Nested Hashes; automatic creation of missing nodes

Instance Method Summary collapse

Constructor Details

#initialize(data = {}) ⇒ StructuredSetup

Returns a new instance of StructuredSetup.



9
10
11
12
# File 'lib/pslm/structuredsetup.rb', line 9

def initialize(data={})
  @data = deep_copy data
  super(@data)
end

Instance Method Details

#dupObject



40
41
42
# File 'lib/pslm/structuredsetup.rb', line 40

def dup
  deep_copy self
end

#get(*keys) ⇒ Object

getter with automatic creation of missing nodes



25
26
27
# File 'lib/pslm/structuredsetup.rb', line 25

def get(*keys)
  get_create(keys[0..-2])[keys[-1]]
end

#get_dv(*args) ⇒ Object

getter with default value



30
31
32
33
34
35
36
37
38
# File 'lib/pslm/structuredsetup.rb', line 30

def get_dv(*args)
  default = args.pop
  innermost = get_create(args[0..-2])
  unless innermost.has_key? args[-1] then
    innermost[args[-1]] = default
  end

  return innermost[args[-1]]
end

#set(*args) ⇒ Object

set(:key1, :key2, :key3, value) ~ set[:key2] = value setter with automatic creation of missing nodes



16
17
18
19
20
21
22
# File 'lib/pslm/structuredsetup.rb', line 16

def set(*args)
  value = args.pop
  last_key = args.pop

  hsh = get_create(args)
  hsh[last_key] = value
end

#update(s2) ⇒ Object



44
45
46
# File 'lib/pslm/structuredsetup.rb', line 44

def update(s2)
  DeepMerge.deep_merge! s2, @data
end