Class: SettingsCabinet::Settings

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

Instance Method Summary collapse

Constructor Details

#initialize(hash) ⇒ Settings

Returns a new instance of Settings.



27
28
29
30
31
# File 'lib/settings_cabinet/settings.rb', line 27

def initialize(hash)
  @values = hash.transform_values { |v| v.is_a?(::Hash) ? self.class.new(v) : v }

  define_accessors!(@values)
end

Instance Method Details

#[](key) ⇒ Object



33
34
35
# File 'lib/settings_cabinet/settings.rb', line 33

def [](key)
  @values[key.to_sym]
end

#dig(*keys) ⇒ Object



37
38
39
40
# File 'lib/settings_cabinet/settings.rb', line 37

def dig(*keys)
  keys[0] = keys[0].to_sym unless keys.empty?
  @values.dig(*keys)
end

#fetch(key) ⇒ Object



42
43
44
# File 'lib/settings_cabinet/settings.rb', line 42

def fetch(key, ...)
  @values.fetch(key.to_sym, ...)
end

#fetch_values(*keys, &block) ⇒ Object



46
47
48
# File 'lib/settings_cabinet/settings.rb', line 46

def fetch_values(*keys, &block)
  @values.fetch_values(*keys.map(&:to_sym), &block)
end

#to_hObject



54
55
56
# File 'lib/settings_cabinet/settings.rb', line 54

def to_h
  @values.transform_values { |v| v.is_a?(self.class) ? v.to_h : v }
end

#values_at(*keys) ⇒ Object



50
51
52
# File 'lib/settings_cabinet/settings.rb', line 50

def values_at(*keys)
  @values.values_at(*keys.map(&:to_sym))
end