class SCV::Config

Attributes

data[RW]

Public Class Methods

new(file_store, file_name) click to toggle source
# File lib/scv/config.rb, line 7
def initialize(file_store, file_name)
  @file_store = file_store
  @file_name  = file_name

  @data = {}
  load
end

Public Instance Methods

[](key) click to toggle source
# File lib/scv/config.rb, line 23
def [](key)
  hash, key = resolve_key key
  hash[key]
end
[]=(key, value) click to toggle source
# File lib/scv/config.rb, line 28
def []=(key, value)
  hash, key = resolve_key key, create: true
  hash[key] = value
end
delete(key) click to toggle source
# File lib/scv/config.rb, line 33
def delete(key)
  hash, key = resolve_key key, create: false
  hash.delete key
end
load() click to toggle source
# File lib/scv/config.rb, line 15
def load
  @data = YAML.load @file_store.fetch(@file_name) if @file_store.file? @file_name
end
save() click to toggle source
# File lib/scv/config.rb, line 19
def save
  @file_store.store @file_name, @data.to_yaml
end

Private Instance Methods

resolve_key(hash=@data, key, create: false) click to toggle source
# File lib/scv/config.rb, line 40
def resolve_key(hash=@data, key, create: false)
  key, rest = key.split '.', 2

  if rest.nil?
    [hash, key]
  else
    hash[key] = {} if create and not hash.key? key

    resolve_key hash[key], rest, create: create
  end
end